我想查询弹性搜索,查询字段是否为列表之一 我如何在Elastic 6.0.0中做到这一点? 例如,这些是我的文档:
{"name" : "jim","company": "a"}
{"name" : "jack","company": "a"}
{"name" : "joe","company": "b"}
{"name" : "foo","company": "b"}
{"name" : "bar","company": "c"}
{"name" : "boe","company": "c"}
{"name" : "jee","company": "d"}
Id喜欢返回所有公司为a
或b
的条目
我尝试过:
curl -u elastic:password -XPOST 'localhost:9243/my-index/_search?size=2000&pretty' -H 'Content-Type: application/json' -d'
{
"size": 2000,
"query": {
"bool": {
"must": [
{"term": {"company": ["a","b"]}}
]
}
}
}'
但我收到错误消息[term] query does not support array of values
注意:我需要一个可以让我使用数组的解决方案,因为我需要匹配约100个选项(在上面的示例中为100个公司)
答案 0 :(得分:2)
Terms query是您要寻找的。 p>
将term
替换为terms
。 Term不接受数组,而terms接受。
{
"size": 2000,
"query": {
"bool": {
"must": [
{
"terms": {
"company": ["a","b"]
}
}
]
}
}
}