elasticsearch - elasticsearch 查询的问题,范围格式错误的查询,预期 END_OBJECT 但找到 FIELD_NAME
问题描述
我无法弄清楚这个查询有什么问题。“范围”和“存在”都独立工作,但在一起我得到parsing expection
and range malformed query, expected END_OBJECT but found FIELD_NAME
。有人能弄清楚这个查询有什么问题吗?
{
"query": {
"range":{
"@timestamp":{
"gte":"2019-08-04T11:00:00",
"lt":"2019-10-04T12:00:00"
}
},
"exists": {
"field": "params.zone"
}
},
"_source": ["@timestamp", "params.zone"]
}
解决方案
如果您想像您正在使用的那样组合多个查询,range
并且exists
您需要使用bool 查询并确定您的哪些子句是强制性的(must
)、可选的(should
)、过滤器(filter
),或者不应该出现在结果中(must_not
)
可行的查询可能如下所示(在此示例中,您的子句是强制性的):
{
"query": {
"bool": {
"must": [
{
"range": {
"@timestamp": {
"gte": "2019-08-04T11:00:00",
"lt": "2019-10-04T12:00:00"
}
}
},
{
"exists": {
"field": "params.zone"
}
}
]
}
},
"_source": [
"@timestamp",
"params.zone"
]
}
推荐阅读
- python - 将 curl 响应读入变量/对象
- notifications - Liferay 6.2 - 主键不存在 UserNotificationEvent?
- c# - DataGridViewComboBoxCell ComboBox 不出现
- ms-access - 如何更改 MS Access 2016 中的默认数据表字体?
- powershell - 服务器上本地管理员组中的 Active Directory 组 - 访问被拒绝
- c++ - main.exe 已停止在代码块中工作
- html - 如何重新设计两个按钮
- python - Python函数可以在外面修改列表或字典,但不能修改字符串
- docker - 清除后 Docker 仍然显示版本
- json - FullCalendar 不显示数据