我正在嘗試使用日期範圍和時間範圍爲我的查詢創建一個過濾器。就我而言,日期和時間是不同的字段。所以我想運行如下查詢:向我展示本月發生的所有事件(15-10-01/15-10-30)10:00:00 am至12:00:00之間Elasticsearch:按日期和時間過濾爲不同的字段
這是我的查詢,但它不起作用。注意:如果我只使用「日期部分」它可以工作,但是與時間字段的組合,結果是錯誤的。
有什麼建議嗎?
{"query": {
"filtered": {
"query": {
"match": { "message" : "error" }
},
"filter": {
"bool" : {
"must" : {
"range": {
"date": {
"gte": "15-11-01",
"lte": "15-11-30"
}
}
},
"must" : {
"range": {
"time": {
"gte": "10:00:00",
"lte": "12:00:00"
}
}
}
}
}
}
}
}
更新:運行命令:
curl -XGET localhost:9200/my_index/_mapping
正如你們中的一些建議,我可以發現,ES是界定「時間」字段類型爲字符串,而不是(日期)時間。 此外,正如它在第一個答案中指出的,我的查詢語法是錯誤的。
是否elasticsearch支持的時間格式,即它知道如何在一天中的時間內應用lte和gte嗎? –
你對'時間'有什麼映射? –
在logstash配置文件中,這些字段以這種方式映射:%{DATE:date}%{TIME:time} – xtingray