我是Elasticsearch的新手,正在寻找模糊查询搜索。 我用这样的对象/记录值制作了新的索引产品
{ "_index": "products", "_type": "product", "_id": "10", "_score": 1, "_source": { "value": [ "Ipad", "Apple", "Air", "32 GB" ] } }
现在当我在elasticsearch中执行模糊查询搜索时
{ query: { fuzzy: { value: "tpad" } } }
它会向我返回预期的正确记录(上述产品)。 而且我知道该术语tpad匹配,ipad因此记录已归还。 但是从技术上讲,我怎么知道它已经匹配了ipad。elasticsearch仅返回完整记录,像这样
tpad
ipad
{ "took": 4, "timed_out": false, "_shards": { "total": 5, "successful": 5, "failed": 0 }, "hits": { "total": 1, "max_score": 0.61489093, "hits": [ { "_index": "products", "_type": "product", "_id": "10", "_score": 0.61489093, "_source": { "value": [ "Ipad", "Apple", "Air", "32 GB" ] } } ] } }
是否有elasticsearch任何方式,这样我可以知道,如果它匹配了tpad反对ipad
如果使用高亮,Elasticsearch将显示匹配的术语:
curl -XGET http://localhost:9200/products/product/_search?pretty -d '{ "query" : { "fuzzy" : { "value" : "tpad" } }, "highlight": { "fields" : { "value" : {} } } }'
Elasticsearch将返回匹配的文档,并突出显示该片段:
{ "took" : 31, "timed_out" : false, "_shards" : { "total" : 5, "successful" : 5, "failed" : 0 }, "hits" : { "total" : 1, "max_score" : 0.13424811, "hits" : [ { "_index" : "products", "_type" : "product", "_id" : "10", "_score" : 0.13424811, "_source":{ "value" : ["Ipad", "Apple", "Air", "32 GB" ] }, "highlight" : { "value" : [ "<em>Ipad</em>" ] } } ] } }