IP 范围聚合(IP Range)

IP 范围聚合 #

ip_range 聚合用于 IP 地址。它适用于 ip 类型字段。您可以在 CIDR 表示法中定义 IP 范围和掩码。

相关指南(先读这些) #

GET sample_data_logs/_search
{
  "size": 0,
  "aggs": {
    "access": {
      "ip_range": {
        "field": "ip",
        "ranges": [
          {
            "from": "1.0.0.0",
            "to": "126.158.155.183"
          },
          {
            "mask": "1.0.0.0/8"
          }
        ]
      }
    }
  }
}

返回内容

...
"aggregations" : {
  "access" : {
    "buckets" : [
      {
        "key" : "1.0.0.0/8",
        "from" : "1.0.0.0",
        "to" : "2.0.0.0",
        "doc_count" : 98
      },
      {
        "key" : "1.0.0.0-126.158.155.183",
        "from" : "1.0.0.0",
        "to" : "126.158.155.183",
        "doc_count" : 7184
      }
    ]
  }
 }
}

如果您向映射中将 ip_range 设置为 false 的索引添加了字段格式不正确的文档,Easysearch 会拒绝整个文档。您可以将 ignore_malformed 设置为 true 以指定 Easysearch 应忽略格式不正确的字段。默认值为 false

...
"mappings": {
  "properties": {
    "ips": {
      "type": "ip_range",
      "ignore_malformed": true
    }
  }
}

参数说明 #

参数必需/可选数据类型描述
field必填StringIP 类型的字段名称。
ranges必填ArrayIP 范围数组。每个元素可含 from/tomask(CIDR 表示法)。
keyed可选Boolean若为 true,以键值对形式返回桶。默认 false

CIDR 表示法 #

使用 mask 参数可以用 CIDR 表示法定义 IP 范围,常用的网段掩码:

CIDR范围IP 数量
/8x.0.0.0 - x.255.255.25516,777,216
/16x.y.0.0 - x.y.255.25565,536
/24x.y.z.0 - x.y.z.255256
/32单个 IP1

提示ip_range 聚合同时支持 IPv4 和 IPv6 地址。