我使用字段的值查询Elasticsearch索引。有时,我必须提取所有字段设置为一个值的文档;有时我必须检索所有具有字段的文档,并使用值列表中的一个值进行设置。
后一个用例包含前者。我可以使用terms
构造使用单个查询吗?
POST /_search
{
"query": {
"terms" : { "user" : ["kimchy", "elasticsearch"]}
}
}
或者,如果我知道我只需要搜索唯一值,那么最好使用term
构造吗?
POST _search
{
"query": {
"term" : { "user" : "kimchy" }
}
}
哪种方法在性能方面更好?如果terms
构造中的值是唯一的,Elasticsearch是否会执行任何优化?
感谢所有人。
答案 0 :(得分:1)
见link。条款查询会自动缓存,而术语查询则不会。所以,接下来你运行相同的查询,查询执行的时间会更快。因此,如果您需要一次又一次地运行相同的查询,则术语查询是一个不错的选择。如果没有,两者之间没有太大区别。