在下面的ElasticSearch中,我在两个字段Balances
和name
中搜索单词notes
:
GET /_search
{ "query": {
"multi_match": { "query": "Balances",
"fields": ["name","notes"]
}
}
}
name
字段中的结果:
"hits" : {
"total" : {
"value" : 1,
"relation" : "eq"
},
"max_score" : 1.673515,
"hits" : [
{
"_index" : "idx",
"_type" : "_doc",
"_id" : "25",
"_score" : 1.673515,
"_source" : {
"name" : "Deposits checking accounts balances",
"notes" : "These are the notes",
"@timestamp" : "2019-04-18T21:05:00.387Z",
"id" : 25,
"@version" : "1"
}
}
]
}
现在,我想知道ElasticSearch在哪个字段中找到了值。我可以评估结果,看看搜索到的文本是在name
还是notes
中,但是如果是模糊搜索,则无法做到这一点。
ElasticSearch能否告诉我在哪个字段中找到了文本,还可以在结果的左侧和右侧提供一个包含5个单词的代码段,以告诉用户为什么结果是匹配项?
我想要实现的功能类似于Google用粗体突出显示短语中找到的文本。
答案 0 :(得分:1)
我认为Find out which fields matched in a multi match query中的2个解决方案仍然是有效的解决方案: