弹性搜索版本:0.90.2
这是问题所在:我想在索引中找到文档,以便它们:
- 匹配多个字段中的所有查询标记
- 使用字段自己的分析器
因此,如果有 4 个文件:
{ "_id" : 1, "name" : "Joe Doe", "mark" : "1", "message" : "Message First" }
{ "_id" : 2, "name" : "Ann", "mark" : "3", "message" : "Yesterday Joe Doe got 1 for the message First"}
{ "_id" : 3, "name" : "Joe Doe", "mark" : "2", "message" : "Message Second" }
{ "_id" : 4, "name" : "Dan Spencer", "mark" : "2", "message" : "Message Third" }
并且查询是“Joe First 1”,它应该找到 ids 1 和 2。即,它应该找到包含搜索查询中所有标记的文档,无论它们在哪个字段中(可能所有标记都在一个字段中,或者可能每个令牌都在自己的字段中)。
一种解决方案是使用elasticsearch“_all”字段功能:这样它将我需要的所有字段(名称,标记,消息)合并为一个,我将能够使用类似的东西来查询它
"match": {
"_all": {
"query": "Joe First 1",
"operator": "and"
}
}
但这样我只能为“_all”字段指定分析器。而且我需要“名称”和“消息”字段来拥有不同的标记器/标记过滤器集(假设名称将具有语音分析器,而消息将具有一些词干标记过滤器)。
有没有办法做到这一点?