elasticsearch - 如何查询具有精确字段 1 匹配和非空字段 2 匹配的弹性搜索文档
问题描述
我在弹性搜索中有文档,field1
映射到一个整数值并field2
映射到一个数组。我想创建一个查询来查找所有包含field1 == 100
且不field2
为空的文档。
我该如何编写这样的查询?
解决方案
使用term 查询匹配field1
值100
并使用exists 查询检查是否field2
存在(非空)。上述两个条件都是 AND,因此将它们包装在bool querymust
的子句中。
{
"query": {
"bool": {
"must": [
{
"term": {
"field1": 100
}
},
{
"exists": {
"field": "field2"
}
}
]
}
}
}
根据@Val 的评论更新:
{
"query": {
"bool": {
"filter": [
{
"term": {
"field1": 100
}
},
{
"exists": {
"field": "field2"
}
}
]
}
}
}
推荐阅读
- javascript - React hooks 渲染原因
- javascript - Bootstrap JS 动态标签 - 每个导航链接更改相同的元素
- angular - angular-oauth2-oidc 忘记密码流程
- python - Python: appending list element that is already in the list
- javascript - Translating aes-js CTR into Java
- reactjs - 如何使用 MaterialUI 导入 Alert / AlertTitle 组件
- firebase - Why won't my flutter firestore string or image_picker function carry over to another page, or vice-versa?
- sql-server - SQL Join with an OR Clause
- reactjs - React-route-dom updates url but doesn't render component
- python - 带有 pipenv 的 Pyinstaller