【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 地址范围,并对这些范围进行聚合和统计。

相关推荐
逸Y 仙X17 小时前
文章六:ElasticSearch 集群通信安全权限
java·大数据·服务器·elasticsearch·搜索引擎·全文检索
繁星星繁18 小时前
Git 入门之道:从版本流转到基础操作
大数据·git·elasticsearch
Elastic 中国社区官方博客1 天前
我们如何在 Elasticsearch Serverless 上将向量搜索吞吐量提升一倍
大数据·数据库·人工智能·elasticsearch·搜索引擎·云原生·serverless
愤怒的苹果ext1 天前
Flink同步到ES时间遇到的问题
elasticsearch·flink·时间
共享家95271 天前
OpenClaw核心功能
大数据·elasticsearch·搜索引擎
醉颜凉2 天前
实战教程:如何使用 Kibana 对 Elasticsearch 数据进行可视化和操作(从入门到精通)
大数据·elasticsearch·jenkins
oioihoii2 天前
CentOS 7单机部署Elasticsearch:这些坑和关键配置,生产环境踩过才知道
linux·elasticsearch·centos
Elastic 中国社区官方博客2 天前
Kibana 仪表板即代码:在 Elastic 9.4 中用于 Kibana 仪表板的 GitOps、漂移检测与 Terraform
大数据·人工智能·elasticsearch·搜索引擎·云原生·kibana·terraform
MemoriKu2 天前
【端侧 AI 部署】MobileCLIP 导出 ONNX/TFLite 并发布到 Hugging Face 的完整实践
大数据·人工智能·elasticsearch·搜索引擎·重构·开源
逸Y 仙X2 天前
文章五:Elasticsearch安全通信
java·大数据·安全·elasticsearch·搜索引擎·全文检索·jenkins