我正在使用fuzzy并希望elasticsearch返回搜索的单词而不仅仅是点击。当我搜索单词dogo并且模糊搜索找到单词时,dog我想知道是dogo谁找到了它。
fuzzy
dogo
dog
数据:
{ "index": { "_id":1 }} { "title": "The quick brown fox", "price":5 } { "index": { "_id":2 }} { "title": "The quick blue dog", "price":7 } { "index": { "_id":3 }} { "title": "The slow brown dog", "price":5 }
查询:
{ "query": { "bool": { "should": [ { "fuzzy": { "title": "dogo" } }, { "fuzzy": { "title": "fox" } } ] } }, "highlight" : { "fields" : { "title":{ "pre_tags": [ "===>" ], "post_tags": [ "<===" ], "fragment_size": 200, "number_of_fragments": 100 } } } }
该查询将返回,===>dog<===但不知道是否dogo找到它。
===>dog<===
有人知道该怎么做或一个主意吗?我希望输出为dog : dogo。
dog : dogo
您可以为此命名查询,方法是为每个查询命名。在结果中,每个matched_queries匹配都将包含一个数组,其中包含匹配的查询的名称(例如dogo及fox以下)。
matched_queries
fox
{ "query": { "bool": { "should": [ { "fuzzy": { "name": { "value": "dogo", "_name": "dogo" } } }, { "fuzzy": { "name": { "value": "fox", "_name": "fox" } } } ] } }, "highlight": { "fields": { "title": { "pre_tags": [ "===>" ], "post_tags": [ "<===" ], "fragment_size": 200, "number_of_fragments": 100 } } } }