在Elasticsearch查询中使用带有一个值的术语或术语

时间:2018-04-24 08:05:41

标签: elasticsearch

我使用字段的值查询Elasticsearch索引。有时,我必须提取所有字段设置为一个值的文档;有时我必须检索所有具有字段的文档,并使用值列表中的一个值进行设置。

后一个用例包含前者。我可以使用terms构造使用单个查询吗?

POST /_search
{
    "query": {
        "terms" : { "user" : ["kimchy", "elasticsearch"]}
    }
}

或者,如果我知道我只需要搜索唯一值,那么最好使用term构造吗?

POST _search
{
    "query": {
        "term" : { "user" : "kimchy" } 
    }
}

哪种方法在性能方面更好?如果terms构造中的值是唯一的,Elasticsearch是否会执行任何优化?

感谢所有人。

1 个答案:

答案 0 :(得分:1)

link。条款查询会自动缓存,而术语查询则不会。所以,接下来你运行相同的查询,查询执行的时间会更快。因此,如果您需要一次又一次地运行相同的查询,则术语查询是一个不错的选择。如果没有,两者之间没有太大区别。