Elasticsearch聚合查询【 查询统计攻击源IP前十所在的省份和城市】

业务需求:

需要从索引数据中查询,攻击源IP(src_ip)统计前十的所在地。

查询语句:

{
  "query": {
    "match_all": {}
  }
  ,"aggs": {
    "src_ip_city": {
      "terms": {
        "field": "src_ip",
        "size": 10
      }, 
      "aggs": {
        "city": {
          "terms": {
            "field": "src_city",
            "size": 1
          }
        }
      }
    }
    ,"src_ip_region": {
      "terms": {
        "field": "src_ip",
        "size": 10
      }, 
      "aggs": {
        "city": {
          "terms": {
            "field": "src_region",
            "size": 1
          }
        }
      }
    }
  }
}

 查询结果:

Elasticsearch聚合查询【 查询统计攻击源IP前十所在的省份和城市】

Elasticsearch聚合查询【 查询统计攻击源IP前十所在的省份和城市】

这样就获得了攻击源ip 统计前十所在的省份和城市信息

因为我知道数据源里面每个ip的省份和城市必定只有一个,所以使用默认的深度查询

参考资料:https://www.elastic.co/guide/cn/elasticsearch/guide/current/_preventing_combinatorial_explosions.html