term 过滤器在查询单个值时很好用,但是你可能经常需要搜索多个值。比如你想寻找 20 或 30 元的文档,该怎么做呢?
比起使用多个 term
过滤器,你可以用一个 terms
过滤器。terms
过滤器是 term
过滤器的复数版本。它用起来和 term
差不多,我们现在来指定一组数值,而不是单一价格:
{
"terms" : {
"price" : [20, 30]
}
}
像 term
过滤器一样,我们将它放在 filtered
查询中:
GET /my_store/products/_search
{
"query" : {
"filtered" : {
"filter" : {
"terms" : { <1>
"price" : [20, 30]
}
}
}
}
}
- <1> 这是前面提到的
terms
过滤器,放置在filtered
查询中
这条查询将返回第二,第三和第四个文档:
"hits" : [
{
"_id" : "2",
"_score" : 1.0,
"_source" : {
"price" : 20,
"productID" : "KDKE-B-9947-#kL5"
}
},
{
"_id" : "3",
"_score" : 1.0,
"_source" : {
"price" : 30,
"productID" : "JODL-X-1937-#pV7"
}
},
{
"_id": "4",
"_score": 1.0,
"_source": {
"price": 30,
"productID": "QQPX-R-3956-#aD8"
}
}
]
下一节:理解 term 和 terms 是包含操作,而不是相等操作,这点非常重要。这意味着什么?