ElasticSearch - 如何检索过滤记录的数量> 7天前

时间:2015-03-03 18:37:51

标签: elasticsearch

我在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"
      }
    }
  }
}
  }
}

但是没有消息就错了。任何帮助,将不胜感激。此外,我对记录本身并不感兴趣,只是计数。感谢。

1 个答案:

答案 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
                }
              }
            }
          ]
        }
      }
    }
  }
}
相关问题