【Elasticsearch】ip range 聚合

在 Elasticsearch 的 IP 范围聚合中,`mask`参数用于定义 IP 地址范围,它基于 CIDR(无类别域间路由)表示法来指定网络前缀和子网掩码。CIDR 是一种灵活的 IP 地址划分方法,通过指定网络前缀长度来划分网络。

`mask`的作用

在 Elasticsearch 的 IP 范围聚合中,`mask`参数允许你使用 CIDR 表示法来定义 IP 地址范围。例如:

• `10.0.0.0/24`表示网络前缀为`10.0.0.0`,掩码长度为 24 位,覆盖从`10.0.0.0`到`10.0.0.255`的地址范围。

• `10.0.0.128/25`表示网络前缀为`10.0.0.128`,掩码长度为 25 位,覆盖从`10.0.0.128`到`10.0.0.255`的地址范围。

为什么使用`mask`

使用`mask`的主要目的是更高效地管理和统计 IP 地址范围。CIDR 表示法允许灵活地划分网络,避免传统分类方法(A、B、C 类)的浪费。通过定义子网掩码,可以精确地指定需要聚合的 IP 地址范围,从而更准确地统计每个范围内的文档数量。

示例

假设你有一个索引`ip_addresses`,其中存储了用户的 IP 地址信息。你可以使用以下查询来统计特定 CIDR 范围内的 IP 地址数量:

```json

GET /ip_addresses/_search

{

"size": 0,

"aggs": {

"ip_ranges": {

"ip_range": {

"field": "ip",

"ranges": [

{

"mask": "10.0.0.0/24"

},

{

"mask": "10.0.0.128/25"

}

]

}

}

}

}

```

响应示例:

```json

{

"aggregations": {

"ip_ranges": {

"buckets": [

{

"key": "10.0.0.0/24",

"from": "10.0.0.0",

"to": "10.0.0.255",

"doc_count": 100

},

{

"key": "10.0.0.128/25",

"from": "10.0.0.128",

"to": "10.0.0.255",

"doc_count": 50

}

]

}

}

}

```

在这个例子中:

• `10.0.0.0/24`范围内的文档数量为 100。

• `10.0.0.128/25`范围内的文档数量为 50。

通过使用`mask`,你可以灵活地定义 IP 地址范围,并对这些范围进行聚合和统计。

相关推荐
Elastic 中国社区官方博客1 小时前
Elasticsearch:如何创建知识库并使用 AI Assistant 来配置 slack 连接器
大数据·人工智能·elasticsearch·搜索引擎·全文检索·信息与通信
小园子的小菜3 小时前
深度剖析Elasticsearch数据写入与读取:从分片同步到核心组件协同
大数据·elasticsearch·搜索引擎
tealcwu7 小时前
【Unity踩坑】Unity项目提示文件合并有冲突
elasticsearch·unity·游戏引擎
怀璧其罪21 小时前
aleph-node Node upgrade instructions 节点升级说明
大数据·elasticsearch·搜索引擎
print(未来)1 天前
边缘 AI 推理调度与模型优化实战:负载均衡、分片计算与异步策略
elasticsearch
草原印象1 天前
全文检索ElasticSearch实战
大数据·elasticsearch·全文检索
邮专薛之谦1 天前
Git复习(查询版本)
大数据·elasticsearch·搜索引擎
小二·1 天前
Git 高频操作命令大全(分类整理 + 修正说明)
大数据·git·elasticsearch
KANGBboy1 天前
ES 生产排查
大数据·elasticsearch·搜索引擎
Huathy-雨落江南,浮生若梦1 天前
ElasticSearch9入门(二)分词器安装与复杂查询语法
elasticsearch