我在Elasticsearch中有一些文档,其中field1
映射到整数值,field2
映射到数组。我想创建一个查询来查找所有field1 == 100
并且field2
不为空的文档。
如何编写这样的查询?
答案 0 :(得分:3)
使用term query将field1
匹配为值100
,然后使用exists query检查field2
是否存在(不为空)。以上两个条件都是AND,因此将它们包装在bool query的must
子句中。
{
"query": {
"bool": {
"must": [
{
"term": {
"field1": 100
}
},
{
"exists": {
"field": "field2"
}
}
]
}
}
}
根据@Val的评论进行更新:
{
"query": {
"bool": {
"filter": [
{
"term": {
"field1": 100
}
},
{
"exists": {
"field": "field2"
}
}
]
}
}
}