ElasticSearch:在查询中匹配字段

时间:2014-08-19 23:35:24

标签: search elasticsearch

使用match搜索索引文档中的字符串很简单。对面怎么样?我需要在查询中查找字符串字段的匹配项。例如,搜索:

correct horse battery staple

应该使用值为horse battery的字段匹配文档,并且只匹配该文档。使用ElasticSearch的查询是什么?

修改:这是一个关于想要做同样事情的人的帖子,但从未收到任何回复:https://groups.google.com/d/topic/elasticsearch/IYDu5-0YD6E/discussion

2 个答案:

答案 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"
    }
}'