elasticsearch - Elasticsearch 查询未返回多个应过滤器的预期结果
问题描述
我正在使用 Java 的 high-level-rest-api 执行 Elasticsearch 查询,并希望看到处于活动状态或没有参考 ID 的记录。我正在按名称查询记录,如果我直接使用 /_search?q= 命中索引,我会看到我想要的结果。
我的逻辑是否正确(伪代码):
postFilters.MUST {
Should {
MustNotExist {referenceId}
Must {status = Active}
}
Should {
MustNotExist {referenceId}
Must {type = Person}
}
}
我得到的是具有参考 ID 的活动记录。但是,我想包含也没有 referenceId 的记录,因此我有 MustNotExist {referenceId}。
为简单起见,可以删除第二个 Should 子句(用于测试),因为第一个子句本身没有按预期工作。
解决方案
在我的例子中,我不得不使用匹配查询而不是术语查询,因为我查询的值不是原语或字符串。例如,Must, type = Person, Person 的部分是一个枚举,因此寻找“Person”并不完全正确,而 match 允许它“匹配”。
推荐阅读
- excel - 根据复选框复制单元格值并导出为word
- google-sheets - 如果...“或”对于 Google 表格中的数组公式更有效?
- mapbox - Mapbox 以编程方式添加不同高度的多边形
- flutter - 如何通过变量引用实例化一个类?
- python - 尝试安装我的 android 应用程序时收到错误消息
- substrate - 您如何接受带有墨水的文件?
- javascript - 使用 setInterval 时无法将事件添加到 DataTable 分页按钮
- r - 将复杂数据重塑为宽格式,其中输入是长数据和宽数据的混合
- python - 尝试导入繁重的 python 文件时系统停止响应
- javascript - Tone.js 应用程序 - 直到第二次点击音频才会开始