GET _search
{
"query": {
"bool":{
"filter":{
"and":[
{
"term":{
"Server": "XYZ"
},
"range": {
"DateTime":{
"from": "2018-12-13T00:20:48.782Z",
"to":"2018-12-14T00:20:48.782Z"
}
}
}
]
}}
}
}
以上是我提取属于XYZ
服务器的所有记录的弹性查询,在时间范围内,我的数据集中有Server
和DateTime
列,但抛出错误如下:
{“错误”:{ "root_cause":[{“类型”:"parsing_exception",“原因”:“格式错误查询,预期的END_OBJECT但找到了FIELD_NAME",”行“:9,"col":11 } ],”类型“:"parsing_exception",“原因”:“术语格式错误查询,预期的END_OBJECT但找到FIELD_NAME",”行“:9,"col":11 },”状态“:400 }
我在这里错过了什么!
发布于 2019-01-11 02:40:45
您的查询格式错误,请使用以下查询:
GET _search
{
"query": {
"bool": {
"filter": [
{
"term": {
"Server": "XYZ"
}
},
{
"range": {
"DateTime":{
"from": "2018-12-13T00:20:48.782Z",
"to": "2018-12-14T00:20:48.782Z"
}
}
}
]
}
}
}
发布于 2019-01-11 04:10:31
过滤器子句中不能包含and
。ES查询中没有and
子句。基本上,您需要组合term
和range
子句上的筛选器。有关此问题的更多信息,请阅读ES中的组合滤波器。
由于您的查询使用的是无效子句,ES无法解析您的查询。
请使用适当的查询,您应该能够从ES获得结果。
请尝试下面的查询,这应该是很好的工作,并让我知道,如果它不工作。
{
"query": {
"constant_score": {
"filter": {
"bool": {
"must": [
{
"term": {
"Server": "XYZ"
}
},
{
"bool": {
"must": [
{
"range": {
"DateTime": {
"from": "2018-12-13T00:20:48.782Z",
"to": "2018-12-14T00:20:48.782Z"
}
}
}
]
}
}
]
}
}
}
}
}
https://stackoverflow.com/questions/54144011
复制相似问题