当前位置: 首页 > article >正文

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

 


http://www.kler.cn/a/535554.html

相关文章:

  • 【容器技术01】使用 busybox 构建 Mini Linux FS
  • langchain教程-3.OutputParser/输出解析
  • Selenium记录RPA初阶 - 基本输入元件
  • MongoDB学习笔记-解析jsonCommand内容
  • Ubuntu 下 nginx-1.24.0 源码分析 - ngx_sprintf_num 函数
  • 【高阶数据结构(一)】:LRU Cache
  • 华为支付-免密支付接入免密代扣说明
  • linux shell 编程之运算符详解_shell运算符
  • C语言第七课:结构体与联合体
  • nginx+flume网络流量日志实时数据分析实战_日志数据分析
  • 2025-2-5算法打卡
  • 文件基础IO
  • SRS分析及低延迟实现机制
  • Mac 部署Ollama + OpenWebUI完全指南
  • Linux 内核模块 | 加载 / 添加 / 删除 / 优先级
  • Python aiortc API
  • Redis单线程架构
  • Redis - 全局ID生成器 RedisIdWorker
  • TypeScript+React+Redux:类型安全的状态管理最佳实践
  • MySQL知识大总结(进阶)
  • 如何开设一个Facebook账户:详细步骤与注意事项
  • 人工智能丨利用人工智能与自动化实现高效运营推广
  • 十. Redis 事务和 “锁机制”——> 并发秒杀处理的详细说明
  • python爬虫常用库
  • 深入浅出 NVM:如何管理 Node 版本?
  • 8.[网鼎杯 2020 青龙组]AreUSerialz