Elasticsearch:计算给定值出现的次数

问题描述

我对使用 Elasticsearch 进行高级搜索非常陌生,主要使用 Kibana。

在 Kibana 中,我可以进行这样的简单搜索:

type:apache_access

这变成了这个请求:

{
  "version": true,"size": 500,"sort": [
    {
      "@timestamp": {
        "order": "desc","unmapped_type": "boolean"
      }
    }
  ],"_source": {
    "excludes": []
  },"aggs": {
    "2": {
      "date_histogram": {
        "field": "@timestamp","interval": "10m","time_zone": "America/Los_Angeles","min_doc_count": 1
      }
    }
  },"stored_fields": [
    "*"
  ],"script_fields": {},"docvalue_fields": [
    {
      "field": "@timestamp","format": "date_time"
    }
  ],"query": {
    "bool": {
      "must": [
        {
          "range": {
            "@timestamp": {
              "gte": 1613652915536,"lte": 1613696115536,"format": "epoch_millis"
            }
          }
        }
      ],"filter": [
        {
          "bool": {
            "should": [
              {
                "match": {
                  "type": "apache_access"
                }
              }
            ],"minimum_should_match": 1
          }
        }
      ],"should": [],"must_not": []
    }
  },"highlight": {
    "pre_tags": [
      "@kibana-highlighted-field@"
    ],"post_tags": [
      "@/kibana-highlighted-field@"
    ],"fields": {
      "*": {}
    },"fragment_size": 2147483647
  }
}

我想做的是在字段 GROUP BY 上的 MySQL clientip,(或者可能是 clientip.keyword??)我的目标是查看显示哪些 IP 地址给定时间范围内访问日志中最多的。

Kibana 在 UI 中为我执行此操作,具有“500 / 500 条记录中的前 5 个值”功能,但这仅适用于前 500 个值。我想要整个时间段的总和。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)