使用match
搜索索引文档中的字符串很简单。对面怎么样?我需要在查询中查找字符串字段的匹配项。例如,搜索:
correct horse battery staple
应该使用值为horse battery
的字段匹配文档,并且只匹配该文档。使用ElasticSearch的查询是什么?
修改:这是一个关于想要做同样事情的人的帖子,但从未收到任何回复:https://groups.google.com/d/topic/elasticsearch/IYDu5-0YD6E/discussion
答案 0 :(得分:1)
反向索引在了解文档包含完全的多个术语方面效果不佳。在definitive guide中找到的解决方案是索引术语计数并查询不同的可能组合,这非常繁琐。
这是一个related question(关于过滤器的问题,但问题是相同的),有更多的答案。
答案 1 :(得分:0)
我遇到的解决方案是使用porcolator API。我将字段值编入索引作为搜索查询,然后将其与包含查询字符串的文档进行匹配。这种方法运作得很好。以下是我创建过滤器的方法:
curl -XPUT localhost:9200/myindex/.percolator/model-2332 -d '
{
"query": {
"match_phrase": {
"name": "horse battery"
}
}
}'
我是如何质疑它的:
curl -XGET localhost:9200/myindex/model/_percolate -d '
{
"doc": {
"name": "correct horse battery staple"
}
}'