elasticsearch - 使用 Elasticsearch 组合查询
问题描述
我正在尝试使用预期标准(activationDate
在范围内1598889600
)1602051579
或someFlag
=执行搜索true
。
下面是我尝试过的查询,但它不会产生任何带有someFlag
=的记录true
(即使大小很大,例如 5000)。我的 Elasticsearch 确实有很多带有someFlag
=的记录true
。
总共大约有 3000 个文档,此查询返回大约 280 个文档。
{
"query": {
"bool": {
"must": [
{
"range": {
"activationDate": {
"gte": 1598889600
}
}
},
{
"range": {
"activationDate": {
"lte": 1602051579
}
}
}
],
"should": {
"match": {
"someFlag": true
}
}
}
},
"from": 1,
"size": 1000
}
我错过了什么吗?
解决方案
将 must 替换为 should 并将 minimum_should_match=1 设置为 OR 查询,如果任何记录仅满足其中一个 ceiterias 就可以了。接下来将两个范围标准减少到一个,将 gte 和 lte 结合起来。
推荐阅读
- angular - 角度路线动画与图像断断续续
- javascript - React TryCatch 与生产中的错误边界
- javascript - 如何将参数传递给 onSuccess 函数?
- python - 如何使用熊猫数据框列堆叠条形图来堆叠条形图?
- javascript - 在循环定义的错误中推送附件:RangeError:超出最大调用堆栈大小“
- neovim - nvim 无法呈现日晒主题
- reactjs - 如何在 react-admin 中将我的 CSV 文件转换为 Excel 文件?
- mysql - Django:尝试从数据库表中访问特定类型的有限随机问题(由用户告知)
- regex - Google 表单字段验证中的可重复正则表达式模式
- python - Python3嵌套字典覆盖