【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 中国社区官方博客16 小时前
Elasticsearch 向量数据库:几分钟内完成部署,以经济高效的方式扩展至数千亿规模
大数据·运维·数据库·elasticsearch·搜索引擎·ai·全文检索
Elasticsearch19 小时前
将 Vercel 数据导入 Elastic:无需安装任何东西的无服务器可观测性
elasticsearch
Elastic 中国社区官方博客1 天前
Elasticsearch Python DSL 客户端开发
大数据·数据库·python·elasticsearch·搜索引擎·全文检索
阿里云大数据AI技术1 天前
Al Search x ES Agent Builder:让数据活起来,从搜索走向行动
人工智能·elasticsearch·agent
Elasticsearch2 天前
Elastic Agent Builder 中能够引用证据的 AI 根因分析
elasticsearch
考虑考虑2 天前
elasticSearch中的element_type
运维·后端·elasticsearch
CHANCE V2 天前
Elasticsearch 进阶
大数据·elasticsearch·搜索引擎
Elasticsearch2 天前
Elasticsearch 向量数据库:几分钟内完成部署,以经济高效的方式扩展至数千亿规模
elasticsearch
vx-Biye_Design2 天前
SSM伴侣动物伴护星小程序06330-计算机课程设计、毕业设计
spring boot·后端·elasticsearch·小程序·架构·课程设计·idea