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
列,但抛出以下错误:>
{“错误”:{ “根本原因”: [ { “ type”:“ parsing_exception”, “ reason”:“ [字词]格式错误的查询,预期[END_OBJECT],但找到了[FIELD_NAME]”, “行”:9 “ col”:11 } ], “ type”:“ parsing_exception”, “ reason”:“ [字词]格式错误的查询,预期[END_OBJECT],但找到了[FIELD_NAME]”, “行”:9 “ col”:11},“ status”:400}
我在这里想念什么!
答案 0 :(得分:1)
您的查询格式不正确,请改用以下查询:
GET _search
{
"query": {
"bool": {
"filter": [
{
"term": {
"Server": "XYZ"
}
},
{
"range": {
"DateTime":{
"from": "2018-12-13T00:20:48.782Z",
"to": "2018-12-14T00:20:48.782Z"
}
}
}
]
}
}
}
答案 1 :(得分:1)
您的过滤器子句中不能包含and
。 ES查询中没有and
子句。
基本上,您需要在term
和range
子句上组合过滤器。请阅读combine filters in 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"
}
}
}
]
}
}
]
}
}
}
}
}
答案 2 :(得分:0)
错误消息明确表明查询不正确。
您可以查看range query和bool query的官方文档,以确保布尔查询中没有过滤器,范围查询中没有从头到尾的过滤器。
请检查此查询。
GET _search
{
"query": {
"bool": {
"must": [
{
"term": {
"Server": "XYZ"
}
},
{
"range": {
"DateTime":{
"gt": "2018-12-13T00:20:48.782Z",
"lte": "2018-12-14T00:20:48.782Z"
}
}
}
]
}
}
}