所以我的Elasticsearch索引中有3种类型的日志 -
CA,CT和Acc
我正在尝试查询Elasticsearch以获取呼叫前24小时的每个计数,但我没有太多运气合并它们。
调用
10.10.23.45:9200/filebeat-*/_count
使用
{
"query":{
"term": {"type":"ct"}
}
}
获取计数,但尝试添加时间范围已被证明是徒劳的。当我尝试将一个范围添加到同一个查询时 - 它不起作用
我尝试使用:
{
"query":{
"term": {"type":"ct"},
"range":{
"date":{
"gte": "now-1d/d",
"lt" : "now"
}
}
}
}
但是被退回了
{
"error": {
"root_cause": [
{
"type": "parsing_exception",
"reason": "[term] malformed query, expected [END_OBJECT] but found [FIELD_NAME]",
"line": 5,
"col": 3
}
],
"type": "parsing_exception",
"reason": "[term] malformed query, expected [END_OBJECT] but found [FIELD_NAME]",
"line": 5,
"col": 3
},
"status": 400
}
答案 0 :(得分:1)
您需要使用Bool Query将两种类型的查询合并为一种。试试这个。
POST _search
{
"query": {
"bool" : {
"must" : {
"term": {"type":"ct"}
},
"must" : {
"range":{
"date":{
"gte": "now-1d/d",
"lt" : "now"
}
}
}
}
}
}
答案 1 :(得分:0)
以下对我有用(注意 - 这是发送给elasticsearch的帖子:9200 / index / _search)
{"query":{"bool":{"must":[{"query_string":{"analyze_wildcard":true,"query":"type:\"acc\""}},{"range":{"@timestamp":{"gte":"now-1h","lte":"now","format":"epoch_millis"}}}]}}}