我正在尝试查询特定字段存在的日期范围。这似乎很容易,但我感觉关键字"存在"已根据文档进行了更改。我在5.4。 https://www.elastic.co/guide/en/elasticsearch/reference/5.4/query-dsl-exists-filter.html
我使用@timestamp作为日期和字段" error_data"在映射中,只有在找到错误条件时才会出现。
这是我的询问....
GET /filebeat-2017.07.25/_search
{
"query": {
"bool" : {
"filter" : {
"range" : {
"@timestamp" : {
"gte" : "now-5m",
"lte" : "now-1m"
}
}
},
"exists": {
"field": "error_data"
}
}
}
}
但它表示" [bool]查询不支持[exists]"而以下不起作用,但得到解析错误消息" [存在]格式错误的查询,预期[END_OBJECT]但找到[FIELD_NAME]"在第6行第9栏。感谢您的帮助。
GET /filebeat-2017.07.25/_search
{
"query": {
"exists": {
"field": "error_data"
},
"bool" : {
"filter" : {
"range" : {
"@timestamp" : {
"gte" : "now-5m",
"lte" : "now-1m"
}
}
}
}
}
}
答案 0 :(得分:1)
你快到了。试试这样:
GET /filebeat-2017.07.25/_search
{
"query": {
"bool" : {
"filter" : [
{
"range" : {
"@timestamp" : {
"gte" : "now-5m",
"lte" : "now-1m"
}
}
},
{
"exists": {
"field": "error_data"
}
}
]
}
}
}
即。如果您有几个要放入的子句,bool/filter
子句必须是数组: