【问题标题】:Group by a filter on elastic then get the total hits [duplicate]按弹性过滤器分组,然后获得总点击量[重复]
【发布时间】:2015-05-24 12:38:57
【问题描述】:

我有一个弹性索引,其元素看起来像这样:

{
   "_index": "logstash",
   "_type": "logs",
   "_id": "AU2E2aXQESJWOe",
   "_score": 2.248888,
   "_source": {
     "@version": "1",
     "@timestamp": "2015-05-24T07:36:04.811Z",
     "timeApache": "22/May/2015:17:31:56 +0200",
     "client": "XX.XX.XX.XXX",
     "method": "GET",
     "Status": "200",
     "request": "/some/path/",
     "querystring": "?some=querystring",
     "referrer": "\"http://im.areferer.com/en/ref/24230/874802/\"",
     "agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.65 Safari/537.36"
   }
}

问题是我想按“客户”字段(它是一个 IP)进行分组,然后进行计数(总点击数),但我是弹性新手,这对我来说是一项不可能完成的任务。 .. 有人能解释一下如何做到这一点吗?

【问题讨论】:

  • 是的,我想如果您确切地知道您在寻找什么,那么在您的搜索中获得有用的结果会更容易。我会将问题标记为已解决并重复。谢谢。
  • 对于 IP 字段,您可能会发现有用的IPv4 range aggregation。请注意,包含 IP 的字段应为IP type

标签: elasticsearch


【解决方案1】:

假设客户端字段是not_analyzed 字符串字段,我将使用term aggregation,如下所示:

{
    "aggs" : {
        "ips" : {
            "terms" : { "field" : "client" }
        }
    }
}

【讨论】:

  • 这解决了它。我以错误的方式使用了聚合,非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-15
  • 2017-09-04
  • 1970-01-01
  • 1970-01-01
  • 2014-10-23
  • 2022-01-13
  • 2021-07-13
相关资源
最近更新 更多