我在ElasticSearch中存储了事件/记录。它们对应于IIS日志。其中一个领域是" logtime"这是一个字符串字段,格式为YYYY-MM-dd HH:mm:ss(例如2015-02-24 02:46:23)。另一个领域是"响应"这是一个格式为XXX的整数字段(例如404)。从ElasticSearch文档中,我一直在尝试通过HTTP API构建查询(主要使用Fiddler)来检索所有事件的计数,以使响应代码在过去7天内大于或等于300。以下是一个示例查询:
{
"query": {
"filtered": {
"query": { "match_all": {} },
"filter": {
"range": {
"response": {
"gte": 300
}
}
}
}
}
}
我尝试拍打像
这样的东西"last_7_days": {
"filter": {
"range": {
"logtime": {
"gte": "now-7d",
"lte": "now"
}
}
}
}
}
}
但是没有消息就错了。任何帮助,将不胜感激。此外,我对记录本身并不感兴趣,只是计数。感谢。
答案 0 :(得分:1)
您已将过滤器命名为“last_7_days”,过滤器没有名称,只有聚合具有名称。以下是组合两个过滤器并仅返回计数的查询:
GET index1/type1/_count
{
"query": {
"filtered": {
"filter": {
"and": {
"filters": [
{
"range": {
"logtime": {
"gte": "now-7d",
"lte": "now"
}
}
},
{
"range": {
"response": {
"gte": 300
}
}
}
]
}
}
}
}
}