不为失败找理由,要为成功找方法。

【搜索客社区日报】第1975期 (2025-01-21)

 1. 用ES配合docker做个股票监控系统咋样(需要梯子)
https://medium.com/%40rahul.fi ... 3477b
2. 如何保持大ES集群点健康性(需要梯子)
https://medium.com/trendyol-te ... adc06
3. 用winston把日志导入elk(需要梯子)
https://medium.com/%40aamirali ... fc5b2

编辑:斯蒂文
更多资讯:http://news.searchkit.cn
 
继续阅读 »
 1. 用ES配合docker做个股票监控系统咋样(需要梯子)
https://medium.com/%40rahul.fi ... 3477b
2. 如何保持大ES集群点健康性(需要梯子)
https://medium.com/trendyol-te ... adc06
3. 用winston把日志导入elk(需要梯子)
https://medium.com/%40aamirali ... fc5b2

编辑:斯蒂文
更多资讯:http://news.searchkit.cn
  收起阅读 »

Elasticsearch VS Easysearch 性能测试

压测环境

虚拟机配置

使用阿里云上规格:ecs.u1-c1m4.4xlarge,PL2: 单盘 IOPS 性能上限 10 万 (适用的云盘容量范围:461GiB - 64TiB)

vCPU 内存 (GiB) 磁盘(GB) 带宽(Gbit/s) 数量
16 64 500 5000 24

Easysearch 配置

7 节点集群,版本:1.9.0

实例名 内网 IP 软件 vCPU JVM 磁盘
i-2zegn56cijnzklcn2410 172.22.75.144 Easysearch 16 31G 500GB
i-2zegn56cijnzklcn240u 172.23.15.97 Easysearch 16 31G 500GB
i-2zegn56cijnzklcn240i 172.25.230.228 Easysearch 16 31G 500GB
i-2zegn56cijnzklcn240y 172.22.75.142 Easysearch 16 31G 500GB
i-2zegn56cijnzklcn240x 172.22.75.143 Easysearch 16 31G 500GB
i-2zegn56cijnzklcn240z 172.24.250.252 Easysearch 16 31G 500GB
i-2zegn56cijnzklcn240r 172.24.250.254 Easysearch 16 31G 500GB

Elasticsearch 配置

7 节点集群,版本:7.10.2

实例名称 内网 IP 软件 vCPU JVM 磁盘
i-2zegn56cijnzklcn240m 172.24.250.251 Elasticsearch 16 31G 500GB
i-2zegn56cijnzklcn240p 172.22.75.145 Elasticsearch 16 31G 500GB
i-2zegn56cijnzklcn240o 172.17.67.246 Elasticsearch 16 31G 500GB
i-2zegn56cijnzklcn240t 172.22.75.139 Elasticsearch 16 31G 500GB
i-2zegn56cijnzklcn240q 172.22.75.140 Elasticsearch 16 31G 500GB
i-2zegn56cijnzklcn240v 172.24.250.253 Elasticsearch 16 31G 500GB
i-2zegn56cijnzklcn240l 172.24.250.250 Elasticsearch 16 31G 500GB

监控集群配置

单节点 Easysearch 集群,版本:1.9.0

实例名 内网 IP 软件 vCPU 内存 磁盘
i-2zegn56cijnzklcn240f 172.25.230.226 监控集群:Console 16 64G 500GB
i-2zegn56cijnzklcn240j 172.23.15.98 监控集群:Easysearch 16 64G 500GB

压测 loadgen 配置

loadgen 版本:1.25.0

4 台压 Easysearch,4 台压 Elasticsearch。

实例名 内网 IP 软件 vCPU 内存 磁盘
i-2zegn56cijnzklcn240n 172.17.67.245 Loadgen - 压 Easysearch 16 64G 500GB
i-2zegn56cijnzklcn2411 172.22.75.141 Loadgen - 压 Easysearch 16 64G 500GB
i-2zegn56cijnzklcn240k 172.25.230.227 Loadgen - 压 Easysearch 16 64G 500GB
i-2zegn56cijnzklcn240e 172.22.75.138 Loadgen - 压 Easysearch 16 64G 500GB
i-2zegn56cijnzklcn240h 172.24.250.255 Loadgen - 压 Elasticsearch 16 64G 500GB
i-2zegn56cijnzklcn240w 172.24.251.0 Loadgen - 压 Elasticsearch 16 64G 500GB
i-2zegn56cijnzklcn240g 172.24.250.248 Loadgen - 压 Elasticsearch 16 64G 500GB
i-2zegn56cijnzklcn240s 172.24.250.249 Loadgen - 压 Elasticsearch 16 64G 500GB

压测索引 Mapping

PUT nginx
{
  "mappings": {
    "properties": {
      "method": {
        "type": "keyword"
      },
      "bandwidth": {
        "type": "integer"
      },
      "service_name": {
        "type": "keyword"
      },
      "ip": {
        "type": "ip"
      },
      "memory_usage": {
        "type": "integer"
      },
      "upstream_time": {
        "type": "float"
      },
      "url": {
        "type": "keyword"
      },
      "response_size": {
        "type": "integer"
      },
      "request_time": {
        "type": "float"
      },
      "request_body_size": {
        "type": "integer"
      },
      "error_code": {
        "type": "keyword"
      },
      "metrics": {
        "properties": {
          "queue_size": {
            "type": "integer"
          },
          "memory_usage": {
            "type": "integer"
          },
          "thread_count": {
            "type": "integer"
          },
          "cpu_usage": {
            "type": "integer"
          },
          "active_connections": {
            "type": "integer"
          }
        }
      },
      "cpu_usage": {
        "type": "integer"
      },
      "user_agent": {
        "type": "keyword"
      },
      "connections": {
        "type": "integer"
      },
      "timestamp": {
        "type": "date",
        "format": "yyyy-MM-dd'T'HH:mm:ss.SSS"
      },
      "status": {
        "type": "integer"
      }
    }
  },
  "settings": {
    "number_of_shards": 7,
    "number_of_replicas": 0,
    "refresh_interval": "30s"
  }
}

压测方法

每 4 个 loadgen 使用批量写入接口 bulk 轮询压测同一集群的 7 个节点,每个请求写入 10000 个文档。

具体请求如下:

requests:
  - request: #prepare some docs
      method: POST
      runtime_variables:
#        batch_no: uuid
      runtime_body_line_variables:
#        routing_no: uuid
#      url: $[[env.ES_ENDPOINT]]/_bulk
      url: $[[ip]]/_bulk
      body_repeat_times: 10000
      basic_auth:
       username: "$[[env.ES_USERNAME]]"
       password: "$[[env.ES_PASSWORD]]"
      body: |
        {"index": {"_index": "nginx", "_type": "_doc", "_id": "$[[uuid]]"}}
        $[[message]]

压测数据样本

{"method":"DELETE","bandwidth":1955,"service_name":"cart-service","ip":"120.204.26.240","memory_usage":1463,"upstream_time":"1.418","url":"/health","response_size":421,"request_time":"0.503","request_body_size":1737,"error_code":"SYSTEM_ERROR","metrics":{"queue_size":769,"memory_usage":1183,"thread_count":65,"cpu_usage":68,"active_connections":837},"cpu_usage":70,"user_agent":"Mozilla/5.0 (iPad; CPU OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.1","connections":54,"timestamp":"2024-11-16T14:25:21.423","status":500}
{"method":"OPTIONS","bandwidth":10761,"service_name":"product-service","ip":"223.99.83.60","memory_usage":567,"upstream_time":"0.907","url":"/static/js/app.js","response_size":679,"request_time":"1.287","request_body_size":1233,"error_code":"NOT_FOUND","metrics":{"queue_size":565,"memory_usage":1440,"thread_count":148,"cpu_usage":39,"active_connections":1591},"cpu_usage":87,"user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.1","connections":354,"timestamp":"2024-11-16T05:37:28.423","status":502}
{"method":"HEAD","bandwidth":10257,"service_name":"recommendation-service","ip":"183.60.242.143","memory_usage":1244,"upstream_time":"0.194","url":"/api/v1/recommendations","response_size":427,"request_time":"1.449","request_body_size":1536,"error_code":"UNAUTHORIZED","metrics":{"queue_size":848,"memory_usage":866,"thread_count":86,"cpu_usage":29,"active_connections":3846},"cpu_usage":71,"user_agent":"Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)","connections":500,"timestamp":"2024-11-16T15:14:30.424","status":403}

压测索引 1 主分片 0 副本

Elastic 吞吐

Elastic 线程及队列

资源消耗

Easysearch 吞吐

Easysearch 线程及队列

资源消耗

对比

软件 平均集群吞吐 平均单节点吞吐 最大队列 磁盘消耗
Elasticsearch 5w 5w 811 10G
Easysearch 7w 7w 427 4G

压测索引 1 主分片 1 副本

Elastic 吞吐

Elastic 线程及队列

资源消耗

Easysearch 吞吐

Easysearch 线程及队列

资源消耗

对比

软件 平均集群吞吐 平均单节点吞吐 最大队列 磁盘消耗(~3000 万文档)
Elasticsearch 10w 5w 791 22G
Easysearch 14w 7w 421 7G

压测索引 7 主分片

Elastic 吞吐

Elastic 线程及队列

资源消耗

网络

单节点平均接收 26MB/s,对应带宽:1456 Mb/s

5 千万文档,总存储 105 GB,单节点 15 GB

Easysearch 吞吐

Easysearch 线程及队列

资源消耗

对比

软件 平均集群吞吐 平均单节点吞吐 最大队列 磁盘消耗
Elasticsearch 35w 5w 2449 105G
Easysearch 60w 8.5w 1172 36G

总结

通过对不同场景的压测结果进行对比分析,得出以下结论:

  • Easysearch 相比 Elasticsearch 的索引性能显著提升
    Easysearch 集群的吞吐性能提升了 40% - 70%,且随着分片数量的增加,性能提升效果更为显著。
  • Easysearch 相比 Elasticsearch 的磁盘压缩效率大幅提高
    Easysearch 集群的磁盘压缩效率提升了 2.5 - 3 倍,并且随着数据量的增加,压缩效果愈发明显。

此测试结果表明,Easysearch 在日志处理场景中具有更高的性能与存储效率优势,尤其适用于大规模分片与海量数据的使用场景。

如有任何问题,请随时联系我,期待与您交流!

继续阅读 »

压测环境

虚拟机配置

使用阿里云上规格:ecs.u1-c1m4.4xlarge,PL2: 单盘 IOPS 性能上限 10 万 (适用的云盘容量范围:461GiB - 64TiB)

vCPU 内存 (GiB) 磁盘(GB) 带宽(Gbit/s) 数量
16 64 500 5000 24

Easysearch 配置

7 节点集群,版本:1.9.0

实例名 内网 IP 软件 vCPU JVM 磁盘
i-2zegn56cijnzklcn2410 172.22.75.144 Easysearch 16 31G 500GB
i-2zegn56cijnzklcn240u 172.23.15.97 Easysearch 16 31G 500GB
i-2zegn56cijnzklcn240i 172.25.230.228 Easysearch 16 31G 500GB
i-2zegn56cijnzklcn240y 172.22.75.142 Easysearch 16 31G 500GB
i-2zegn56cijnzklcn240x 172.22.75.143 Easysearch 16 31G 500GB
i-2zegn56cijnzklcn240z 172.24.250.252 Easysearch 16 31G 500GB
i-2zegn56cijnzklcn240r 172.24.250.254 Easysearch 16 31G 500GB

Elasticsearch 配置

7 节点集群,版本:7.10.2

实例名称 内网 IP 软件 vCPU JVM 磁盘
i-2zegn56cijnzklcn240m 172.24.250.251 Elasticsearch 16 31G 500GB
i-2zegn56cijnzklcn240p 172.22.75.145 Elasticsearch 16 31G 500GB
i-2zegn56cijnzklcn240o 172.17.67.246 Elasticsearch 16 31G 500GB
i-2zegn56cijnzklcn240t 172.22.75.139 Elasticsearch 16 31G 500GB
i-2zegn56cijnzklcn240q 172.22.75.140 Elasticsearch 16 31G 500GB
i-2zegn56cijnzklcn240v 172.24.250.253 Elasticsearch 16 31G 500GB
i-2zegn56cijnzklcn240l 172.24.250.250 Elasticsearch 16 31G 500GB

监控集群配置

单节点 Easysearch 集群,版本:1.9.0

实例名 内网 IP 软件 vCPU 内存 磁盘
i-2zegn56cijnzklcn240f 172.25.230.226 监控集群:Console 16 64G 500GB
i-2zegn56cijnzklcn240j 172.23.15.98 监控集群:Easysearch 16 64G 500GB

压测 loadgen 配置

loadgen 版本:1.25.0

4 台压 Easysearch,4 台压 Elasticsearch。

实例名 内网 IP 软件 vCPU 内存 磁盘
i-2zegn56cijnzklcn240n 172.17.67.245 Loadgen - 压 Easysearch 16 64G 500GB
i-2zegn56cijnzklcn2411 172.22.75.141 Loadgen - 压 Easysearch 16 64G 500GB
i-2zegn56cijnzklcn240k 172.25.230.227 Loadgen - 压 Easysearch 16 64G 500GB
i-2zegn56cijnzklcn240e 172.22.75.138 Loadgen - 压 Easysearch 16 64G 500GB
i-2zegn56cijnzklcn240h 172.24.250.255 Loadgen - 压 Elasticsearch 16 64G 500GB
i-2zegn56cijnzklcn240w 172.24.251.0 Loadgen - 压 Elasticsearch 16 64G 500GB
i-2zegn56cijnzklcn240g 172.24.250.248 Loadgen - 压 Elasticsearch 16 64G 500GB
i-2zegn56cijnzklcn240s 172.24.250.249 Loadgen - 压 Elasticsearch 16 64G 500GB

压测索引 Mapping

PUT nginx
{
  "mappings": {
    "properties": {
      "method": {
        "type": "keyword"
      },
      "bandwidth": {
        "type": "integer"
      },
      "service_name": {
        "type": "keyword"
      },
      "ip": {
        "type": "ip"
      },
      "memory_usage": {
        "type": "integer"
      },
      "upstream_time": {
        "type": "float"
      },
      "url": {
        "type": "keyword"
      },
      "response_size": {
        "type": "integer"
      },
      "request_time": {
        "type": "float"
      },
      "request_body_size": {
        "type": "integer"
      },
      "error_code": {
        "type": "keyword"
      },
      "metrics": {
        "properties": {
          "queue_size": {
            "type": "integer"
          },
          "memory_usage": {
            "type": "integer"
          },
          "thread_count": {
            "type": "integer"
          },
          "cpu_usage": {
            "type": "integer"
          },
          "active_connections": {
            "type": "integer"
          }
        }
      },
      "cpu_usage": {
        "type": "integer"
      },
      "user_agent": {
        "type": "keyword"
      },
      "connections": {
        "type": "integer"
      },
      "timestamp": {
        "type": "date",
        "format": "yyyy-MM-dd'T'HH:mm:ss.SSS"
      },
      "status": {
        "type": "integer"
      }
    }
  },
  "settings": {
    "number_of_shards": 7,
    "number_of_replicas": 0,
    "refresh_interval": "30s"
  }
}

压测方法

每 4 个 loadgen 使用批量写入接口 bulk 轮询压测同一集群的 7 个节点,每个请求写入 10000 个文档。

具体请求如下:

requests:
  - request: #prepare some docs
      method: POST
      runtime_variables:
#        batch_no: uuid
      runtime_body_line_variables:
#        routing_no: uuid
#      url: $[[env.ES_ENDPOINT]]/_bulk
      url: $[[ip]]/_bulk
      body_repeat_times: 10000
      basic_auth:
       username: "$[[env.ES_USERNAME]]"
       password: "$[[env.ES_PASSWORD]]"
      body: |
        {"index": {"_index": "nginx", "_type": "_doc", "_id": "$[[uuid]]"}}
        $[[message]]

压测数据样本

{"method":"DELETE","bandwidth":1955,"service_name":"cart-service","ip":"120.204.26.240","memory_usage":1463,"upstream_time":"1.418","url":"/health","response_size":421,"request_time":"0.503","request_body_size":1737,"error_code":"SYSTEM_ERROR","metrics":{"queue_size":769,"memory_usage":1183,"thread_count":65,"cpu_usage":68,"active_connections":837},"cpu_usage":70,"user_agent":"Mozilla/5.0 (iPad; CPU OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.1","connections":54,"timestamp":"2024-11-16T14:25:21.423","status":500}
{"method":"OPTIONS","bandwidth":10761,"service_name":"product-service","ip":"223.99.83.60","memory_usage":567,"upstream_time":"0.907","url":"/static/js/app.js","response_size":679,"request_time":"1.287","request_body_size":1233,"error_code":"NOT_FOUND","metrics":{"queue_size":565,"memory_usage":1440,"thread_count":148,"cpu_usage":39,"active_connections":1591},"cpu_usage":87,"user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.1","connections":354,"timestamp":"2024-11-16T05:37:28.423","status":502}
{"method":"HEAD","bandwidth":10257,"service_name":"recommendation-service","ip":"183.60.242.143","memory_usage":1244,"upstream_time":"0.194","url":"/api/v1/recommendations","response_size":427,"request_time":"1.449","request_body_size":1536,"error_code":"UNAUTHORIZED","metrics":{"queue_size":848,"memory_usage":866,"thread_count":86,"cpu_usage":29,"active_connections":3846},"cpu_usage":71,"user_agent":"Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)","connections":500,"timestamp":"2024-11-16T15:14:30.424","status":403}

压测索引 1 主分片 0 副本

Elastic 吞吐

Elastic 线程及队列

资源消耗

Easysearch 吞吐

Easysearch 线程及队列

资源消耗

对比

软件 平均集群吞吐 平均单节点吞吐 最大队列 磁盘消耗
Elasticsearch 5w 5w 811 10G
Easysearch 7w 7w 427 4G

压测索引 1 主分片 1 副本

Elastic 吞吐

Elastic 线程及队列

资源消耗

Easysearch 吞吐

Easysearch 线程及队列

资源消耗

对比

软件 平均集群吞吐 平均单节点吞吐 最大队列 磁盘消耗(~3000 万文档)
Elasticsearch 10w 5w 791 22G
Easysearch 14w 7w 421 7G

压测索引 7 主分片

Elastic 吞吐

Elastic 线程及队列

资源消耗

网络

单节点平均接收 26MB/s,对应带宽:1456 Mb/s

5 千万文档,总存储 105 GB,单节点 15 GB

Easysearch 吞吐

Easysearch 线程及队列

资源消耗

对比

软件 平均集群吞吐 平均单节点吞吐 最大队列 磁盘消耗
Elasticsearch 35w 5w 2449 105G
Easysearch 60w 8.5w 1172 36G

总结

通过对不同场景的压测结果进行对比分析,得出以下结论:

  • Easysearch 相比 Elasticsearch 的索引性能显著提升
    Easysearch 集群的吞吐性能提升了 40% - 70%,且随着分片数量的增加,性能提升效果更为显著。
  • Easysearch 相比 Elasticsearch 的磁盘压缩效率大幅提高
    Easysearch 集群的磁盘压缩效率提升了 2.5 - 3 倍,并且随着数据量的增加,压缩效果愈发明显。

此测试结果表明,Easysearch 在日志处理场景中具有更高的性能与存储效率优势,尤其适用于大规模分片与海量数据的使用场景。

如有任何问题,请随时联系我,期待与您交流!

收起阅读 »

搜索客社区日报 第1974期 (2025-01-20)

1、一文彻底讲透GPT架构及推理原理
https://mp.weixin.qq.com/s/moVLtn0_necwuyxdIlosSg

2、AI编程工具使用技巧——通义灵码
https://blog.csdn.net/weixin_7 ... 12263

3、一文读懂 ESLint配置
https://blog.csdn.net/qq_61654 ... 26398

4、微服务篇-深入了解索引库与文档 CRUD 操作、使用 RestCliet API 操作索引库与文档 CRUD(Java 客户端连接 Elasticsearch 服务端)
https://blog.csdn.net/Tingfeng ... 17465

5、【Elasticsearch】 复合查询
https://blog.csdn.net/lilinhai ... 82306

编辑:Muse
更多资讯:http://news.searchkit.cn
继续阅读 »
1、一文彻底讲透GPT架构及推理原理
https://mp.weixin.qq.com/s/moVLtn0_necwuyxdIlosSg

2、AI编程工具使用技巧——通义灵码
https://blog.csdn.net/weixin_7 ... 12263

3、一文读懂 ESLint配置
https://blog.csdn.net/qq_61654 ... 26398

4、微服务篇-深入了解索引库与文档 CRUD 操作、使用 RestCliet API 操作索引库与文档 CRUD(Java 客户端连接 Elasticsearch 服务端)
https://blog.csdn.net/Tingfeng ... 17465

5、【Elasticsearch】 复合查询
https://blog.csdn.net/lilinhai ... 82306

编辑:Muse
更多资讯:http://news.searchkit.cn 收起阅读 »

搜索客社区日报 第1973期 (2025-01-16)

1.黄东旭:2025 数据库技术展望
https://mp.weixin.qq.com/s/SkJH5rB-3XcVy-Zc5QcQGQ
2.揭秘DeepSeek:一个更极致的中国技术理想主义故事
https://mp.weixin.qq.com/s/r9zZaEgqAa_lml_fOEZmjg
3.带你了解: Elastic Serverless如何在全球范围内协调工作负载
https://mp.weixin.qq.com/s/xo0nVVHYQhn5vCBKytwIvg
4.AI 开发者视角:2024 年大模型基础设施与中间件工具链生态演进
https://mp.weixin.qq.com/s/LmrIzUzI7hIEQLwLK8AoqA

编辑:Se7en
更多资讯:http://news.searchkit.cn
继续阅读 »
1.黄东旭:2025 数据库技术展望
https://mp.weixin.qq.com/s/SkJH5rB-3XcVy-Zc5QcQGQ
2.揭秘DeepSeek:一个更极致的中国技术理想主义故事
https://mp.weixin.qq.com/s/r9zZaEgqAa_lml_fOEZmjg
3.带你了解: Elastic Serverless如何在全球范围内协调工作负载
https://mp.weixin.qq.com/s/xo0nVVHYQhn5vCBKytwIvg
4.AI 开发者视角:2024 年大模型基础设施与中间件工具链生态演进
https://mp.weixin.qq.com/s/LmrIzUzI7hIEQLwLK8AoqA

编辑:Se7en
更多资讯:http://news.searchkit.cn 收起阅读 »

搜索客社区日报 第1972期 (2025-01-15)

1.MCP Server 开发实战:无缝对接 LLM 和 Elasticsearch
https://mp.weixin.qq.com/s/38HiPOOKVKz3C76d_SGkmw
2.怎么去评估可搜索快照的性能
https://blog.csdn.net/UbuntuTo ... 31200
3.Elasticsearch:Lucene 2024 年回顾
https://blog.csdn.net/UbuntuTo ... 92339


编辑:kin122 
更多资讯:http://news.searchkit.cn
继续阅读 »
1.MCP Server 开发实战:无缝对接 LLM 和 Elasticsearch
https://mp.weixin.qq.com/s/38HiPOOKVKz3C76d_SGkmw
2.怎么去评估可搜索快照的性能
https://blog.csdn.net/UbuntuTo ... 31200
3.Elasticsearch:Lucene 2024 年回顾
https://blog.csdn.net/UbuntuTo ... 92339


编辑:kin122 
更多资讯:http://news.searchkit.cn 收起阅读 »

【直播预告】第6期 搜索客 Meetup | Easysearch 请求限速漫谈 2025-01-17 19:00

本次活动由 搜索客社区、极限科技(INFINI Labs)联合举办,活动邀请到 INFINI Labs 高级解决方案架构师 杨帆 老师给大家带来精彩分享,欢迎预约直播观看~

活动主题:Easysearch 请求限速漫谈
活动时间:2025 年 01 月 17 日 19:00-20:00(周三)
活动形式:微信视频号(极限实验室)直播
报名方式:关注或扫码海报中的二维码进行预约

嘉宾介绍

杨帆,极限科技(INFINI Labs)高级解决方案架构师、《老杨玩搜索》栏目 B 站 UP 主,拥有十余年金融行业服务工作经验,熟悉 Linux、数据库、网络等领域。目前主要从事 Easysearch、Elasticsearch 等搜索引擎的技术支持工作,服务国内私有化部署的客户。

主题摘要

将和大家一起畅谈,为什么要限速,最早是怎样提出这个需求来的?对读请求限速我们能做什么?对写请求限速我们能做什么?

参与有奖

本次直播活动将设有福袋抽奖环节,参与就有机会获得 INFINI Labs 周边纪念品,包括 T 恤、鸭舌帽、咖啡杯、指甲刀套件、精品围巾等等(图片仅供参考,款式、颜色与尺码随机)。

活动交流

本活动设有 Meetup 技术交流群,可添加小助手微信拉群,与更多小伙伴一起学习交流。

Meetup 讲师招募

搜索客社区 Meetup 的成功举办,离不开社区小伙伴的热情参与。目前社区讲师招募计划也在持续进行中,我们诚挚邀请各位技术大咖、行业精英踊跃提交演讲议题,与大家分享您的经验。

讲师报名链接:http://cfp.searchkit.cn
或扫描下方二维码,立刻报名成为讲师!

Meetup 活动聚焦 AI 与搜索领域的最新动态,以及数据实时搜索分析、向量检索、技术实践与案例分析、日志分析、安全等领域的深度探讨。

我们热切期待您的精彩分享!

往期回顾

关于 搜索客(SearchKit)社区

搜索客社区由 Elasticsearch 中文社区进行全新的品牌升级,以新的 Slogan:“搜索人自己的社区” 为宣言。汇集搜索领域最新动态、精选干货文章、精华讨论、文档资料、翻译与版本发布等,为广大搜索领域从业者提供更为丰富便捷的学习和交流平台。

社区官网:https://searchkit.cn

继续阅读 »

本次活动由 搜索客社区、极限科技(INFINI Labs)联合举办,活动邀请到 INFINI Labs 高级解决方案架构师 杨帆 老师给大家带来精彩分享,欢迎预约直播观看~

活动主题:Easysearch 请求限速漫谈
活动时间:2025 年 01 月 17 日 19:00-20:00(周三)
活动形式:微信视频号(极限实验室)直播
报名方式:关注或扫码海报中的二维码进行预约

嘉宾介绍

杨帆,极限科技(INFINI Labs)高级解决方案架构师、《老杨玩搜索》栏目 B 站 UP 主,拥有十余年金融行业服务工作经验,熟悉 Linux、数据库、网络等领域。目前主要从事 Easysearch、Elasticsearch 等搜索引擎的技术支持工作,服务国内私有化部署的客户。

主题摘要

将和大家一起畅谈,为什么要限速,最早是怎样提出这个需求来的?对读请求限速我们能做什么?对写请求限速我们能做什么?

参与有奖

本次直播活动将设有福袋抽奖环节,参与就有机会获得 INFINI Labs 周边纪念品,包括 T 恤、鸭舌帽、咖啡杯、指甲刀套件、精品围巾等等(图片仅供参考,款式、颜色与尺码随机)。

活动交流

本活动设有 Meetup 技术交流群,可添加小助手微信拉群,与更多小伙伴一起学习交流。

Meetup 讲师招募

搜索客社区 Meetup 的成功举办,离不开社区小伙伴的热情参与。目前社区讲师招募计划也在持续进行中,我们诚挚邀请各位技术大咖、行业精英踊跃提交演讲议题,与大家分享您的经验。

讲师报名链接:http://cfp.searchkit.cn
或扫描下方二维码,立刻报名成为讲师!

Meetup 活动聚焦 AI 与搜索领域的最新动态,以及数据实时搜索分析、向量检索、技术实践与案例分析、日志分析、安全等领域的深度探讨。

我们热切期待您的精彩分享!

往期回顾

关于 搜索客(SearchKit)社区

搜索客社区由 Elasticsearch 中文社区进行全新的品牌升级,以新的 Slogan:“搜索人自己的社区” 为宣言。汇集搜索领域最新动态、精选干货文章、精华讨论、文档资料、翻译与版本发布等,为广大搜索领域从业者提供更为丰富便捷的学习和交流平台。

社区官网:https://searchkit.cn

收起阅读 »

【搜索客社区日报】第1971期 (2024-01-14)

1. 我在慕尼黑Elastic大会之所见(需要梯子)
https://medium.com/life-at-apo ... 6dcd1
2. 咋把PG的数据撸进ES啊(需要梯子)
https://medium.com/%40techphil ... f124a
3. 我们是怎么让ES集群扛住上百万次访问的(需要梯子)
https://medium.com/%40jeevansa ... a5e40
编辑:斯蒂文
更多资讯:http://news.searchkit.cn
 
继续阅读 »
1. 我在慕尼黑Elastic大会之所见(需要梯子)
https://medium.com/life-at-apo ... 6dcd1
2. 咋把PG的数据撸进ES啊(需要梯子)
https://medium.com/%40techphil ... f124a
3. 我们是怎么让ES集群扛住上百万次访问的(需要梯子)
https://medium.com/%40jeevansa ... a5e40
编辑:斯蒂文
更多资讯:http://news.searchkit.cn
  收起阅读 »

如何在 Easysearch 中使用 Rollup 优化时序数据的存储和查询

背景

在现代数据驱动的世界中,时序数据的处理变得越来越重要。无论是监控系统、日志分析,还是物联网设备的数据收集,时序数据都占据了大量的存储空间。随着时间的推移,这些数据的存储成本和管理复杂度也在不断增加。

为了解决这一问题,Rollup 技术应运而生。本文将带你深入了解 Rollup 的概念、优势以及如何在 Easysearch 中使用 Rollup 来优化时序数据的存储和查询。


什么是 Rollup?

Rollup 是一种数据聚合技术,主要用于处理时序数据。它通过将细粒度的原始数据汇总为粗粒度的数据,从而减少存储空间并提高查询效率。简单来说,Rollup 可以将大量的详细数据压缩为更小的、更具代表性的数据集,同时保留关键的业务指标。

Rollup 的优势

  1. 降低存储成本:通过汇总数据,Rollup 可以显著减少历史数据的存储空间,从而降低存储成本。
  2. 提高查询性能:汇总后的数据量更小,查询速度更快,尤其是在处理大规模历史数据时,性能提升尤为明显。
  3. 无缝集成:Easysearch 的 Rollup 功能支持直接查询原始索引,业务代码无需修改,用户无感知。
  4. 自动化管理:Rollup 任务可以自动滚动生成新的索引,无需手动干预,简化了数据管理流程。

Rollup 的使用场景

Rollup 特别适用于以下场景:

  • 监控系统:监控系统产生的指标数据通常非常详细,但随着时间推移,这些数据的价值逐渐降低。通过 Rollup,可以将这些数据汇总为更粗粒度的指标,保留关键信息的同时减少存储压力。
  • 日志分析:日志数据通常包含大量的细节信息,但随着时间的推移,这些细节信息的重要性逐渐降低。Rollup 可以帮助你将日志数据汇总为更高层次的统计信息,便于长期存储和分析。
  • 物联网数据:物联网设备产生的数据量巨大,且大部分数据在短期内具有较高的分析价值。通过 Rollup,可以将这些数据汇总为更粗粒度的形式,便于长期存储和查询。

使用 Rollup 的先决条件

在使用 Rollup 之前,需要满足以下条件:

安装索引生命周期管理插件:Rollup 功能是索引生命周期管理插件的一部分,因此必须安装该插件。

源索引必须包含 date 类型字段:Rollup 依赖于时间字段来进行数据聚合,因此源索引必须包含一个 date 类型的字段。

Easysearch 中的 Rollup 功能

Easysearch 提供了强大的 Rollup 功能,支持多种聚合类型,并且可以自动滚动生成新的索引。下面我们将详细介绍如何在 Easysearch 中使用 Rollup。

支持的聚合类型

Easysearch 的 Rollup 功能支持以下聚合类型:

  • 数值类型字段avgsummaxminvalue_countpercentiles
  • keyword 类型字段terms 聚合
  • date 类型字段date_histogramdate_range 聚合

Rollup 的核心参数详解

在配置 Rollup 任务时,以下几个参数至关重要:

1. metrics 参数:定义需要聚合的数值字段

metrics 参数用于指定哪些数值字段需要进行聚合计算。Rollup 任务会对这些字段进行指定的聚合操作(如 avgsummaxminvalue_countpercentiles),并将结果存储到目标索引中。

示例:

"metrics": [
  "payload.elasticsearch.index_stats.*"
]

在这个例子中,metrics 指定了对 payload.elasticsearch.index_stats 下的所有字段进行聚合。


2. attributes 参数:保留原始数据的非聚合字段

attributes 参数用于指定哪些字段需要原封不动地保留在 Rollup 结果中。这些字段不会被聚合,而是直接复制到目标索引中。

示例:

"attributes": [
  "agent.*",
  "metadata.*"
]

在这个例子中,attributes 指定了所有以 agent.metadata. 开头的字段都会被保留到 Rollup 结果中。


3. exclude 参数:排除不需要处理的字段

exclude 参数用于排除某些字段,使其不参与 Rollup 任务。这些字段既不会被聚合,也不会被保留到目标索引中。

示例:

"exclude": ["payload.elasticsearch.index_stats.routing.*"]

在这个例子中,exclude 指定了 payload.elasticsearch.index_stats.routing 下的所有字段都不会被处理。


4. filter 参数:过滤源数据

filter 参数用于过滤源数据,只有符合过滤条件的文档才会被 Rollup 任务处理。这个参数可以帮助你减少需要处理的数据量,从而提高 Rollup 任务的效率。

示例:

"filter": {
  "metadata.name": "index_stats"
}

在这个例子中,filter 指定了只有 metadata.name 字段值为 index_stats 的文档才会被 Rollup 任务处理。


5. identity 参数:定义分组字段

identity 参数用于指定哪些字段作为分组条件。Rollup 任务会根据这些字段的值对数据进行分组,然后在每个分组内进行聚合计算。

功能:

  • 定义数据分组的字段。
  • 支持多个字段的组合,用于创建唯一的分组键。
  • 常用于标识数据的来源或类别。

示例:

"identity": [
  "metadata.labels.cluster_id",
  "metadata.labels.index_id",
  "metadata.labels.index_name",
  "metadata.category",
  "payload.elasticsearch.index_stats.index_info.health"
]

在这个例子中,identity 指定了多个字段作为分组条件。Rollup 任务会根据这些字段的值对数据进行分组,然后在每个分组内进行聚合计算。


6. interval 参数:定义时间聚合间隔

interval 参数用于指定时间聚合的间隔。Rollup 任务会根据这个间隔将数据按时间分桶,然后在每个时间桶内进行聚合计算。

功能:

  • 定义时间聚合的粒度。
  • 支持多种时间单位,如 1m(1 分钟)、1h(1 小时)、1d(1 天)等。
  • 常用于按时间维度汇总数据。

示例:

"interval": "1m"

在这个例子中,interval 指定了时间聚合的间隔为 1 分钟。Rollup 任务会每分钟对数据进行一次聚合。


1.10 版本的新特性

从 Easysearch 1.10.0 版本开始,Rollup 功能引入了一些新特性,进一步增强了其灵活性和易用性。

1. 支持 date_range 聚合

在 1.10.0 版本中,Rollup 增加了对 原始索引使用 date_range 聚合的支持。这意味着你可以在原始索引根据日期范围对数据进行聚合,而不仅仅是固定的时间间隔。

示例:

"date_range": {
  "field": "@timestamp",
  "ranges": [
    { "from": "now-1d/d", "to": "now" },
    { "from": "now-7d/d", "to": "now-1d/d" }
  ]
}

2. 通配符方式批量启动/停止 Rollup Job

在 1.10.0 版本中,你可以使用通配符批量启动或停止 Rollup 任务。这大大简化了任务管理的操作。

示例:

POST _rollup/jobs/rollup*/_start
POST _rollup/jobs/rollup*/_stop

3. 设置 Rollup 索引自动滚动的条数

你可以通过设置 rollup.max_docs 参数,控制 Rollup 索引自动滚动的条数。当索引中的文档数量达到设定值时,系统会自动创建一个新的 Rollup 索引。

示例:

PUT /_cluster/settings
{
    "transient": {
      "rollup.max_docs": 10000000
    }
}

4. 新增 ROLLUP_SEARCH_MAX_COUNT 配置

在 1.10.0 版本中,新增了 ROLLUP_SEARCH_MAX_COUNT 配置项,用于控制 Rollup 在运行 Job 时收集历史数据的最大并发分片请求数。这个配置项可以帮助你优化 Rollup 任务的性能,并避免集群资源过载。

功能:

  • 控制并发请求数:限制 Rollup 任务在执行搜索请求时的最大并发分片请求数。
  • 动态调整:支持在集群运行时动态调整,无需重启集群。
  • 默认值2,即默认情况下,Rollup 任务最多会同时发送 2 个并发分片请求。

示例:

PUT /_cluster/settings
{
    "transient": {
      "rollup.search.max_count": 2
    }
}

在这个例子中,ROLLUP_SEARCH_MAX_COUNT 被设置为 2,表示 Rollup 任务在执行搜索请求时,最多会同时发送 2 个并发分片请求。

配置建议:

  • 小规模集群:建议设置为较小的值(如 2),以避免资源竞争。
  • 大规模集群:可以适当增加该值(如 4),以提高并发性能。
  • 动态调整:根据集群负载情况动态调整该值,以优化性能和资源利用率。

创建 Rollup 任务的完整示例

以下是一个完整的 Rollup 任务配置示例,展示了 metricsattributesexcludefilter 参数的综合使用:

PUT _rollup/jobs/rollup1
{
  "rollup": {
    "source_index": ".infini_metrics",
    "target_index": "rollup1_{{ctx.source_index}}",
    "timestamp": "timestamp",
    "continuous": true,
    "page_size": 1000,
    "cron": "*/10 1-23 * * *",
    "timezone": "UTC+8",
    "stats": [
      {
        "max": {}
      },
      {
        "value_count": {}
      }
    ],
    "interval": "1m",
    "identity": [
      "metadata.labels.cluster_id",
      "metadata.labels.index_id",
      "metadata.labels.index_name",
      "metadata.category",
      "payload.elasticsearch.index_stats.index_info.health"
    ],
    "attributes": [
      "agent.*",
      "metadata.*"
    ],
    "metrics": [
      "payload.elasticsearch.index_stats.*"
    ],
    "exclude": ["payload.elasticsearch.index_stats.routing.*"],
    "filter": {
      "metadata.name": "index_stats"
    }
  }
}

如何使用 Rollup 索引

从 1.10.0 版本开始,索引生命周期插件不再默认启用 rollup 搜索功能,如果想使用搜索 rollup 搜索功能,需要设置

PUT /_cluster/settings
{
    "transient": {
      "rollup.search.enabled": true
    }
}

无需特意搜索 rollup 索引,只需使用标准的 _search API 对原始目标索引进行搜索。需要注意的是,查询时必须符合目标索引的约束条件。

以下是一个使用 Rollup 索引的示例:

GET target-test/_search
{
  "size": 0,
  "aggs": {
    "a": {
      "date_histogram": {
        "field": "@timestamp",
        "fixed_interval": "1h"
      }
    },
    "total_passenger_count": {
      "sum": {
        "field": "passenger_count"
      }
    }
  }
}

总结

Rollup 是处理时序数据的强大工具,能够有效降低存储成本并提高查询性能。Easysearch 的 Rollup 功能不仅支持多种聚合类型,还提供了自动滚动索引、无缝查询等特性,极大地简化了时序数据的管理和分析流程。通过合理配置 metricsattributesexcludefilter 参数,你可以灵活地控制 Rollup 任务的行为,从而高效地处理时序数据。

如果你正在处理大量的时序数据,不妨尝试使用 Rollup 来优化你的数据存储和查询。通过本文的介绍,相信你已经对 Rollup 有了深入的了解。赶快动手试试吧,体验 Rollup 带来的高效与便捷!

更详细的使用文档可在 官网 查看

关于 Easysearch

INFINI Easysearch 是一个分布式的搜索型数据库,实现非结构化数据检索、全文检索、向量检索、地理位置信息查询、组合索引查询、多语种支持、聚合分析等。Easysearch 可以完美替代 Elasticsearch,同时添加和完善多项企业级功能。Easysearch 助您拥有简洁、高效、易用的搜索体验。

官网文档:https://infinilabs.cn/docs/latest/easysearch

作者:张磊,极限科技(INFINI Labs)搜索引擎研发负责人,对 Elasticsearch 和 Lucene 源码比较熟悉,目前主要负责公司的 Easysearch 产品的研发以及客户服务工作。

继续阅读 »

背景

在现代数据驱动的世界中,时序数据的处理变得越来越重要。无论是监控系统、日志分析,还是物联网设备的数据收集,时序数据都占据了大量的存储空间。随着时间的推移,这些数据的存储成本和管理复杂度也在不断增加。

为了解决这一问题,Rollup 技术应运而生。本文将带你深入了解 Rollup 的概念、优势以及如何在 Easysearch 中使用 Rollup 来优化时序数据的存储和查询。


什么是 Rollup?

Rollup 是一种数据聚合技术,主要用于处理时序数据。它通过将细粒度的原始数据汇总为粗粒度的数据,从而减少存储空间并提高查询效率。简单来说,Rollup 可以将大量的详细数据压缩为更小的、更具代表性的数据集,同时保留关键的业务指标。

Rollup 的优势

  1. 降低存储成本:通过汇总数据,Rollup 可以显著减少历史数据的存储空间,从而降低存储成本。
  2. 提高查询性能:汇总后的数据量更小,查询速度更快,尤其是在处理大规模历史数据时,性能提升尤为明显。
  3. 无缝集成:Easysearch 的 Rollup 功能支持直接查询原始索引,业务代码无需修改,用户无感知。
  4. 自动化管理:Rollup 任务可以自动滚动生成新的索引,无需手动干预,简化了数据管理流程。

Rollup 的使用场景

Rollup 特别适用于以下场景:

  • 监控系统:监控系统产生的指标数据通常非常详细,但随着时间推移,这些数据的价值逐渐降低。通过 Rollup,可以将这些数据汇总为更粗粒度的指标,保留关键信息的同时减少存储压力。
  • 日志分析:日志数据通常包含大量的细节信息,但随着时间的推移,这些细节信息的重要性逐渐降低。Rollup 可以帮助你将日志数据汇总为更高层次的统计信息,便于长期存储和分析。
  • 物联网数据:物联网设备产生的数据量巨大,且大部分数据在短期内具有较高的分析价值。通过 Rollup,可以将这些数据汇总为更粗粒度的形式,便于长期存储和查询。

使用 Rollup 的先决条件

在使用 Rollup 之前,需要满足以下条件:

安装索引生命周期管理插件:Rollup 功能是索引生命周期管理插件的一部分,因此必须安装该插件。

源索引必须包含 date 类型字段:Rollup 依赖于时间字段来进行数据聚合,因此源索引必须包含一个 date 类型的字段。

Easysearch 中的 Rollup 功能

Easysearch 提供了强大的 Rollup 功能,支持多种聚合类型,并且可以自动滚动生成新的索引。下面我们将详细介绍如何在 Easysearch 中使用 Rollup。

支持的聚合类型

Easysearch 的 Rollup 功能支持以下聚合类型:

  • 数值类型字段avgsummaxminvalue_countpercentiles
  • keyword 类型字段terms 聚合
  • date 类型字段date_histogramdate_range 聚合

Rollup 的核心参数详解

在配置 Rollup 任务时,以下几个参数至关重要:

1. metrics 参数:定义需要聚合的数值字段

metrics 参数用于指定哪些数值字段需要进行聚合计算。Rollup 任务会对这些字段进行指定的聚合操作(如 avgsummaxminvalue_countpercentiles),并将结果存储到目标索引中。

示例:

"metrics": [
  "payload.elasticsearch.index_stats.*"
]

在这个例子中,metrics 指定了对 payload.elasticsearch.index_stats 下的所有字段进行聚合。


2. attributes 参数:保留原始数据的非聚合字段

attributes 参数用于指定哪些字段需要原封不动地保留在 Rollup 结果中。这些字段不会被聚合,而是直接复制到目标索引中。

示例:

"attributes": [
  "agent.*",
  "metadata.*"
]

在这个例子中,attributes 指定了所有以 agent.metadata. 开头的字段都会被保留到 Rollup 结果中。


3. exclude 参数:排除不需要处理的字段

exclude 参数用于排除某些字段,使其不参与 Rollup 任务。这些字段既不会被聚合,也不会被保留到目标索引中。

示例:

"exclude": ["payload.elasticsearch.index_stats.routing.*"]

在这个例子中,exclude 指定了 payload.elasticsearch.index_stats.routing 下的所有字段都不会被处理。


4. filter 参数:过滤源数据

filter 参数用于过滤源数据,只有符合过滤条件的文档才会被 Rollup 任务处理。这个参数可以帮助你减少需要处理的数据量,从而提高 Rollup 任务的效率。

示例:

"filter": {
  "metadata.name": "index_stats"
}

在这个例子中,filter 指定了只有 metadata.name 字段值为 index_stats 的文档才会被 Rollup 任务处理。


5. identity 参数:定义分组字段

identity 参数用于指定哪些字段作为分组条件。Rollup 任务会根据这些字段的值对数据进行分组,然后在每个分组内进行聚合计算。

功能:

  • 定义数据分组的字段。
  • 支持多个字段的组合,用于创建唯一的分组键。
  • 常用于标识数据的来源或类别。

示例:

"identity": [
  "metadata.labels.cluster_id",
  "metadata.labels.index_id",
  "metadata.labels.index_name",
  "metadata.category",
  "payload.elasticsearch.index_stats.index_info.health"
]

在这个例子中,identity 指定了多个字段作为分组条件。Rollup 任务会根据这些字段的值对数据进行分组,然后在每个分组内进行聚合计算。


6. interval 参数:定义时间聚合间隔

interval 参数用于指定时间聚合的间隔。Rollup 任务会根据这个间隔将数据按时间分桶,然后在每个时间桶内进行聚合计算。

功能:

  • 定义时间聚合的粒度。
  • 支持多种时间单位,如 1m(1 分钟)、1h(1 小时)、1d(1 天)等。
  • 常用于按时间维度汇总数据。

示例:

"interval": "1m"

在这个例子中,interval 指定了时间聚合的间隔为 1 分钟。Rollup 任务会每分钟对数据进行一次聚合。


1.10 版本的新特性

从 Easysearch 1.10.0 版本开始,Rollup 功能引入了一些新特性,进一步增强了其灵活性和易用性。

1. 支持 date_range 聚合

在 1.10.0 版本中,Rollup 增加了对 原始索引使用 date_range 聚合的支持。这意味着你可以在原始索引根据日期范围对数据进行聚合,而不仅仅是固定的时间间隔。

示例:

"date_range": {
  "field": "@timestamp",
  "ranges": [
    { "from": "now-1d/d", "to": "now" },
    { "from": "now-7d/d", "to": "now-1d/d" }
  ]
}

2. 通配符方式批量启动/停止 Rollup Job

在 1.10.0 版本中,你可以使用通配符批量启动或停止 Rollup 任务。这大大简化了任务管理的操作。

示例:

POST _rollup/jobs/rollup*/_start
POST _rollup/jobs/rollup*/_stop

3. 设置 Rollup 索引自动滚动的条数

你可以通过设置 rollup.max_docs 参数,控制 Rollup 索引自动滚动的条数。当索引中的文档数量达到设定值时,系统会自动创建一个新的 Rollup 索引。

示例:

PUT /_cluster/settings
{
    "transient": {
      "rollup.max_docs": 10000000
    }
}

4. 新增 ROLLUP_SEARCH_MAX_COUNT 配置

在 1.10.0 版本中,新增了 ROLLUP_SEARCH_MAX_COUNT 配置项,用于控制 Rollup 在运行 Job 时收集历史数据的最大并发分片请求数。这个配置项可以帮助你优化 Rollup 任务的性能,并避免集群资源过载。

功能:

  • 控制并发请求数:限制 Rollup 任务在执行搜索请求时的最大并发分片请求数。
  • 动态调整:支持在集群运行时动态调整,无需重启集群。
  • 默认值2,即默认情况下,Rollup 任务最多会同时发送 2 个并发分片请求。

示例:

PUT /_cluster/settings
{
    "transient": {
      "rollup.search.max_count": 2
    }
}

在这个例子中,ROLLUP_SEARCH_MAX_COUNT 被设置为 2,表示 Rollup 任务在执行搜索请求时,最多会同时发送 2 个并发分片请求。

配置建议:

  • 小规模集群:建议设置为较小的值(如 2),以避免资源竞争。
  • 大规模集群:可以适当增加该值(如 4),以提高并发性能。
  • 动态调整:根据集群负载情况动态调整该值,以优化性能和资源利用率。

创建 Rollup 任务的完整示例

以下是一个完整的 Rollup 任务配置示例,展示了 metricsattributesexcludefilter 参数的综合使用:

PUT _rollup/jobs/rollup1
{
  "rollup": {
    "source_index": ".infini_metrics",
    "target_index": "rollup1_{{ctx.source_index}}",
    "timestamp": "timestamp",
    "continuous": true,
    "page_size": 1000,
    "cron": "*/10 1-23 * * *",
    "timezone": "UTC+8",
    "stats": [
      {
        "max": {}
      },
      {
        "value_count": {}
      }
    ],
    "interval": "1m",
    "identity": [
      "metadata.labels.cluster_id",
      "metadata.labels.index_id",
      "metadata.labels.index_name",
      "metadata.category",
      "payload.elasticsearch.index_stats.index_info.health"
    ],
    "attributes": [
      "agent.*",
      "metadata.*"
    ],
    "metrics": [
      "payload.elasticsearch.index_stats.*"
    ],
    "exclude": ["payload.elasticsearch.index_stats.routing.*"],
    "filter": {
      "metadata.name": "index_stats"
    }
  }
}

如何使用 Rollup 索引

从 1.10.0 版本开始,索引生命周期插件不再默认启用 rollup 搜索功能,如果想使用搜索 rollup 搜索功能,需要设置

PUT /_cluster/settings
{
    "transient": {
      "rollup.search.enabled": true
    }
}

无需特意搜索 rollup 索引,只需使用标准的 _search API 对原始目标索引进行搜索。需要注意的是,查询时必须符合目标索引的约束条件。

以下是一个使用 Rollup 索引的示例:

GET target-test/_search
{
  "size": 0,
  "aggs": {
    "a": {
      "date_histogram": {
        "field": "@timestamp",
        "fixed_interval": "1h"
      }
    },
    "total_passenger_count": {
      "sum": {
        "field": "passenger_count"
      }
    }
  }
}

总结

Rollup 是处理时序数据的强大工具,能够有效降低存储成本并提高查询性能。Easysearch 的 Rollup 功能不仅支持多种聚合类型,还提供了自动滚动索引、无缝查询等特性,极大地简化了时序数据的管理和分析流程。通过合理配置 metricsattributesexcludefilter 参数,你可以灵活地控制 Rollup 任务的行为,从而高效地处理时序数据。

如果你正在处理大量的时序数据,不妨尝试使用 Rollup 来优化你的数据存储和查询。通过本文的介绍,相信你已经对 Rollup 有了深入的了解。赶快动手试试吧,体验 Rollup 带来的高效与便捷!

更详细的使用文档可在 官网 查看

关于 Easysearch

INFINI Easysearch 是一个分布式的搜索型数据库,实现非结构化数据检索、全文检索、向量检索、地理位置信息查询、组合索引查询、多语种支持、聚合分析等。Easysearch 可以完美替代 Elasticsearch,同时添加和完善多项企业级功能。Easysearch 助您拥有简洁、高效、易用的搜索体验。

官网文档:https://infinilabs.cn/docs/latest/easysearch

作者:张磊,极限科技(INFINI Labs)搜索引擎研发负责人,对 Elasticsearch 和 Lucene 源码比较熟悉,目前主要负责公司的 Easysearch 产品的研发以及客户服务工作。

收起阅读 »

【搜索客社区日报】第1970期 (2025-01-13)

1、如何监控 Elasticsearch 集群健康状态并实现邮件自动预警?
https://mp.weixin.qq.com/s/6K2PHQUdKXt4pngSjWmQRw

2、快速上手 INFINI Console 的 TopN 指标功能
https://infinilabs.cn/blog/202 ... rics/

3、介绍 Easysearch 的 Rollup
https://infinilabs.cn/blog/202 ... llup/

4、极致 ElasticSearch 调优,让你的ES 狂飙100倍!
https://mp.weixin.qq.com/s/7dYZp-NwNQMLRrdOjcNj5w

5、【Elasticsearch】批量操作:优化性能
https://blog.csdn.net/lilinhai ... 06354

编辑:Muse
更多资讯:http://news.searchkit.cn
继续阅读 »
1、如何监控 Elasticsearch 集群健康状态并实现邮件自动预警?
https://mp.weixin.qq.com/s/6K2PHQUdKXt4pngSjWmQRw

2、快速上手 INFINI Console 的 TopN 指标功能
https://infinilabs.cn/blog/202 ... rics/

3、介绍 Easysearch 的 Rollup
https://infinilabs.cn/blog/202 ... llup/

4、极致 ElasticSearch 调优,让你的ES 狂飙100倍!
https://mp.weixin.qq.com/s/7dYZp-NwNQMLRrdOjcNj5w

5、【Elasticsearch】批量操作:优化性能
https://blog.csdn.net/lilinhai ... 06354

编辑:Muse
更多资讯:http://news.searchkit.cn 收起阅读 »

INFINI Labs 产品更新 | Console 发布 TopN 功能,Easysearch 新增 Rollup 能力等

release

INFINI Labs 产品全新发布!此次更新为大家带来了 Console 的全新 TopN 功能,让您能够更高效地定位最关键的节点或索引;Easysearch 新增 Rollup 能力,大幅提升监控指标的存储周期并优化分析体验;此外,Framework 还修复了多项缺陷并进行了多处优化。欢迎下载体验,探索更多可能!

INFINI Console v1.28.0

INFINI Console 是一款非常轻量级的多集群、跨版本的搜索基础设施统一管控平台。通过对流行的搜索引擎基础设施进行跨版本、多集群的集中纳管, 企业可以快速方便的统一管理企业内部的不同版本的多套搜索集群。

Console 在线体验:

http://demo.infini.cloud (用户名/密码:readonly/readonly)。

亮点更新

1. 重磅发布 Console 的 TopN 功能

随着集群节点数和索引数的不断增加,传统的监控方式已难以满足高效定位问题的需求。在过去,Console 的监控分析功能更多聚焦于单个节点或单个索引的多维指标,但当用户需要快速从所有节点或索引中找到 最忙、最慢 或 最大 的关键数据点时,往往显得非常不便。

尽管 Console 提供了强大的高级分析功能,但面对大量指标时,加载速度较慢、指标过于密集,难以直观发现问题。TopN 的推出,旨在解决这些痛点,为用户提供更加精准、高效的监控分析能力。

TopN 是 Console v1.28.0 中新增的主要功能,用于快速识别排名前 N 的关键指标数据点。它通过强大的多维度横向指标对比分析能力,帮助用户更高效地进行性能优化与决策分析。

关于 TopN 具体如何使用,请查看这篇单独的博客:快速上手 INFINI Console 的 TopN 指标功能

2. 集群动态 - 记录分片未分配原因

集群动态是一个用于查看集群全局关键事件的模块,当集群健康状态变为红色时,通常需要分析导致变红的原因。尤其是对历史某次集群变红的原因进行回溯,这对于故障诊断和分析极为重要。

在此次更新中,我们引入了一项新功能:当集群健康状态变红时,系统会自动记录导致变红的详细原因。这一功能为长期故障跟踪和诊断提供了宝贵的数据支持,使问题定位和解决更加高效。

Console 本次详细更新记录如下:

功能更新

  • 支持在 Insight 数据查询 API 中查询 Top N 指标。
  • 在集群健康状态变为红色后,将集群分配活动的解释记录到集群动态日志中。
  • 为索引增加了新的段内存指标(包括 norms、points、version map、fixed bit set)。
  • 新增 Insight 指标 CURD API,用于管理自定义指标。
  • 添加了多个常见用例的内置指标模板。

问题修复

  • 修复了当集群 UUID 为空时查询线程池指标的问题。
  • 修复了单元测试中的问题。

优化改进

  • 修复 GitHub Issues #46 和 #43,完善 GitHub Actions CI 流水线。
  • 优化了 Agent 列表的 UI,当列数据溢出时能更好显示。
  • 在概览表格的每一行添加了加载动画。
  • 支持通过集群 ID 和集群 UUID 查询指标。
  • 优化了指标查询的桶大小设置 (#59)。
  • 在监控图表中,如果数据由于时间间隔小于收集间隔而无数据显示,添加了提示。
  • 检查集群版本是否支持 metric transport_outbound_connections。
  • 将 DatePicker 的时间设置默认超时时间调整为 10 秒。
  • 强化了 http_client,支持更多自定义配置选项。

INFINI Easysearch v1.10.0

INFINI Easysearch 是一个分布式的搜索型数据库,实现非结构化数据检索、全文检索、向量检索、地理位置信息查询、组合索引查询、多语种支持、聚合分析等。Easysearch 可以完美替代 Elasticsearch,同时添加和完善多项企业级功能。Easysearch 助您拥有简洁、高效、易用的搜索体验。

Easysearch 本次更新如下:

功能更新

  • Rollup 功能增强:新增并发限制、任务失败自动重启功能,支持批量启动、停止 Job, 并支持 date_range 聚合。
  • 字段类型功能优化:新增 flattened_text 和 match_only_text 字段类型,支持更多查询场景;

关于 Rollup 具体如何使用,请查看这篇单独的博客:介绍 Easysearch 的 Rollup

INFINI Framework v1.1.0

功能更新

  • 将指标收集任务设置为单例模式,提高执行效率。(#17)
  • 在集群健康状态变为红色时,将集群分配解释记录到活动日志中。
  • 新增 Elastic API 方法 ClusterAllocationExplain。
  • 在指标配置中添加 min_bucket_size 和 hits_total 选项。(#29)
  • 在 http_client 配置部分中新增代理设置。(#33)
  • 添加新条件,用于校验数组和字符串等项目的长度。(#38)
  • 增强 HTTP 处理器工具,支持按状态码写入字节流。(#55)

重大变更

  • 更新 WebSocket 握手消息头,改用 websocket-session-id 以增强会话标识能力。

问题修复

  • 移除节点状态任务中多余的集群统计指标收集逻辑。(#17)
  • 修复集群指标主开关不起作用的问题。(#17)
  • 修复集群状态变为可用后元数据未能即时生效的问题。(#23)
  • 允许在处理多个缺口的文件时跳过下一文件。(#22)
  • 移除每节点指标收集逻辑以提升性能。(#26)
  • 修正从基本身份验证中解析密码的问题。(#31)
  • 修复指标收集任务间隔设置未生效的问题。(#30)
  • 解决无效数据目录问题,直接使用 appname 进行配置。(#46)
  • 修正健康 API 中系统集群健康状态的错误报告。(#39)

优化改进

  • 添加框架和依赖库的提交哈希,增强可追溯性。
  • 在应用初始化时自动去除输入变量中的多余空格。
  • 初次访问时自动初始化 Badger 数据库。(#27)
  • 在日志信息中添加搜索响应详情,增强诊断能力。(#28)

更多详情请查看以下详细的 Release Notes 或联系我们的技术支持团队!

期待反馈

欢迎下载体验使用,如果您在使用过程中遇到如何疑问或者问题,欢迎前往 INFINI Labs Github(https://github.com/infinilabs) 中的对应项目中提交 Feature Request 或提交 Bug。

下载地址: https://infinilabs.cn/download

邮件hello@infini.ltd

电话(+86) 400-139-9200

Discordhttps://discord.gg/4tKTMkkvVX

也欢迎大家微信扫码添加小助手(INFINI-Labs),加入用户群一起讨论交流。

关于极限科技(INFINI Labs)

INFINI Labs

极限科技,全称极限数据(北京)科技有限公司,是一家专注于实时搜索与数据分析的软件公司。旗下品牌极限实验室(INFINI Labs)致力于打造极致易用的数据探索与分析体验。

极限科技是一支年轻的团队,采用天然分布式的方式来进行远程协作,员工分布在全球各地,希望通过努力成为中国乃至全球企业大数据实时搜索分析产品的首选,为中国技术品牌输出添砖加瓦。

官网:https://infinilabs.cn

继续阅读 »

release

INFINI Labs 产品全新发布!此次更新为大家带来了 Console 的全新 TopN 功能,让您能够更高效地定位最关键的节点或索引;Easysearch 新增 Rollup 能力,大幅提升监控指标的存储周期并优化分析体验;此外,Framework 还修复了多项缺陷并进行了多处优化。欢迎下载体验,探索更多可能!

INFINI Console v1.28.0

INFINI Console 是一款非常轻量级的多集群、跨版本的搜索基础设施统一管控平台。通过对流行的搜索引擎基础设施进行跨版本、多集群的集中纳管, 企业可以快速方便的统一管理企业内部的不同版本的多套搜索集群。

Console 在线体验:

http://demo.infini.cloud (用户名/密码:readonly/readonly)。

亮点更新

1. 重磅发布 Console 的 TopN 功能

随着集群节点数和索引数的不断增加,传统的监控方式已难以满足高效定位问题的需求。在过去,Console 的监控分析功能更多聚焦于单个节点或单个索引的多维指标,但当用户需要快速从所有节点或索引中找到 最忙、最慢 或 最大 的关键数据点时,往往显得非常不便。

尽管 Console 提供了强大的高级分析功能,但面对大量指标时,加载速度较慢、指标过于密集,难以直观发现问题。TopN 的推出,旨在解决这些痛点,为用户提供更加精准、高效的监控分析能力。

TopN 是 Console v1.28.0 中新增的主要功能,用于快速识别排名前 N 的关键指标数据点。它通过强大的多维度横向指标对比分析能力,帮助用户更高效地进行性能优化与决策分析。

关于 TopN 具体如何使用,请查看这篇单独的博客:快速上手 INFINI Console 的 TopN 指标功能

2. 集群动态 - 记录分片未分配原因

集群动态是一个用于查看集群全局关键事件的模块,当集群健康状态变为红色时,通常需要分析导致变红的原因。尤其是对历史某次集群变红的原因进行回溯,这对于故障诊断和分析极为重要。

在此次更新中,我们引入了一项新功能:当集群健康状态变红时,系统会自动记录导致变红的详细原因。这一功能为长期故障跟踪和诊断提供了宝贵的数据支持,使问题定位和解决更加高效。

Console 本次详细更新记录如下:

功能更新

  • 支持在 Insight 数据查询 API 中查询 Top N 指标。
  • 在集群健康状态变为红色后,将集群分配活动的解释记录到集群动态日志中。
  • 为索引增加了新的段内存指标(包括 norms、points、version map、fixed bit set)。
  • 新增 Insight 指标 CURD API,用于管理自定义指标。
  • 添加了多个常见用例的内置指标模板。

问题修复

  • 修复了当集群 UUID 为空时查询线程池指标的问题。
  • 修复了单元测试中的问题。

优化改进

  • 修复 GitHub Issues #46 和 #43,完善 GitHub Actions CI 流水线。
  • 优化了 Agent 列表的 UI,当列数据溢出时能更好显示。
  • 在概览表格的每一行添加了加载动画。
  • 支持通过集群 ID 和集群 UUID 查询指标。
  • 优化了指标查询的桶大小设置 (#59)。
  • 在监控图表中,如果数据由于时间间隔小于收集间隔而无数据显示,添加了提示。
  • 检查集群版本是否支持 metric transport_outbound_connections。
  • 将 DatePicker 的时间设置默认超时时间调整为 10 秒。
  • 强化了 http_client,支持更多自定义配置选项。

INFINI Easysearch v1.10.0

INFINI Easysearch 是一个分布式的搜索型数据库,实现非结构化数据检索、全文检索、向量检索、地理位置信息查询、组合索引查询、多语种支持、聚合分析等。Easysearch 可以完美替代 Elasticsearch,同时添加和完善多项企业级功能。Easysearch 助您拥有简洁、高效、易用的搜索体验。

Easysearch 本次更新如下:

功能更新

  • Rollup 功能增强:新增并发限制、任务失败自动重启功能,支持批量启动、停止 Job, 并支持 date_range 聚合。
  • 字段类型功能优化:新增 flattened_text 和 match_only_text 字段类型,支持更多查询场景;

关于 Rollup 具体如何使用,请查看这篇单独的博客:介绍 Easysearch 的 Rollup

INFINI Framework v1.1.0

功能更新

  • 将指标收集任务设置为单例模式,提高执行效率。(#17)
  • 在集群健康状态变为红色时,将集群分配解释记录到活动日志中。
  • 新增 Elastic API 方法 ClusterAllocationExplain。
  • 在指标配置中添加 min_bucket_size 和 hits_total 选项。(#29)
  • 在 http_client 配置部分中新增代理设置。(#33)
  • 添加新条件,用于校验数组和字符串等项目的长度。(#38)
  • 增强 HTTP 处理器工具,支持按状态码写入字节流。(#55)

重大变更

  • 更新 WebSocket 握手消息头,改用 websocket-session-id 以增强会话标识能力。

问题修复

  • 移除节点状态任务中多余的集群统计指标收集逻辑。(#17)
  • 修复集群指标主开关不起作用的问题。(#17)
  • 修复集群状态变为可用后元数据未能即时生效的问题。(#23)
  • 允许在处理多个缺口的文件时跳过下一文件。(#22)
  • 移除每节点指标收集逻辑以提升性能。(#26)
  • 修正从基本身份验证中解析密码的问题。(#31)
  • 修复指标收集任务间隔设置未生效的问题。(#30)
  • 解决无效数据目录问题,直接使用 appname 进行配置。(#46)
  • 修正健康 API 中系统集群健康状态的错误报告。(#39)

优化改进

  • 添加框架和依赖库的提交哈希,增强可追溯性。
  • 在应用初始化时自动去除输入变量中的多余空格。
  • 初次访问时自动初始化 Badger 数据库。(#27)
  • 在日志信息中添加搜索响应详情,增强诊断能力。(#28)

更多详情请查看以下详细的 Release Notes 或联系我们的技术支持团队!

期待反馈

欢迎下载体验使用,如果您在使用过程中遇到如何疑问或者问题,欢迎前往 INFINI Labs Github(https://github.com/infinilabs) 中的对应项目中提交 Feature Request 或提交 Bug。

下载地址: https://infinilabs.cn/download

邮件hello@infini.ltd

电话(+86) 400-139-9200

Discordhttps://discord.gg/4tKTMkkvVX

也欢迎大家微信扫码添加小助手(INFINI-Labs),加入用户群一起讨论交流。

关于极限科技(INFINI Labs)

INFINI Labs

极限科技,全称极限数据(北京)科技有限公司,是一家专注于实时搜索与数据分析的软件公司。旗下品牌极限实验室(INFINI Labs)致力于打造极致易用的数据探索与分析体验。

极限科技是一支年轻的团队,采用天然分布式的方式来进行远程协作,员工分布在全球各地,希望通过努力成为中国乃至全球企业大数据实时搜索分析产品的首选,为中国技术品牌输出添砖加瓦。

官网:https://infinilabs.cn

收起阅读 »

【搜索客社区日报】第1969期 (2025-01-10)

1、Elasticsearch 近似实时(非实时)搜索的原因分析
https://blog.csdn.net/qq_28727 ... 76941

2、Elasticsearch 性能优化指南:线程池优化详细介绍
https://mp.weixin.qq.com/s/Gjnk01cIUxKKm95aXfEKSg

3、如何使用 Logstash 8 连接 Easysearch
https://mp.weixin.qq.com/s/cA9znJ3sNl1Prq3irLThxA

4、【老杨玩搜索】13. Easysearch 页面-pagination | 从零开始实现页面搜索功能
https://www.bilibili.com/video/BV1G2S4YcE9b/

编辑:Fred
更多资讯:http://news.searchkit.cn
继续阅读 »
1、Elasticsearch 近似实时(非实时)搜索的原因分析
https://blog.csdn.net/qq_28727 ... 76941

2、Elasticsearch 性能优化指南:线程池优化详细介绍
https://mp.weixin.qq.com/s/Gjnk01cIUxKKm95aXfEKSg

3、如何使用 Logstash 8 连接 Easysearch
https://mp.weixin.qq.com/s/cA9znJ3sNl1Prq3irLThxA

4、【老杨玩搜索】13. Easysearch 页面-pagination | 从零开始实现页面搜索功能
https://www.bilibili.com/video/BV1G2S4YcE9b/

编辑:Fred
更多资讯:http://news.searchkit.cn 收起阅读 »

【搜索客社区日报】第1968期 (2025-01-09)

1.DeepSeek V3 详细解读:模型&Infra 建设
https://mp.weixin.qq.com/s/DKdXcguKcCS5gcwIRLH-Cg
2.一文带你入门 MCP(模型上下文协议)
https://mp.weixin.qq.com/s/rcOi7e8F5qGVVF2noCk46Q
3.2024年度数据库回顾
https://mp.weixin.qq.com/s/jgYDHdCqWDRDfoFkfs7W8Q
4.看完英伟达发布会,玩游戏的和搞AI的都疯了
https://mp.weixin.qq.com/s/wAfeqAgN6eSPDKybW0-u_Q

编辑:Se7en
更多资讯:http://news.searchkit.cn
继续阅读 »
1.DeepSeek V3 详细解读:模型&Infra 建设
https://mp.weixin.qq.com/s/DKdXcguKcCS5gcwIRLH-Cg
2.一文带你入门 MCP(模型上下文协议)
https://mp.weixin.qq.com/s/rcOi7e8F5qGVVF2noCk46Q
3.2024年度数据库回顾
https://mp.weixin.qq.com/s/jgYDHdCqWDRDfoFkfs7W8Q
4.看完英伟达发布会,玩游戏的和搞AI的都疯了
https://mp.weixin.qq.com/s/wAfeqAgN6eSPDKybW0-u_Q

编辑:Se7en
更多资讯:http://news.searchkit.cn 收起阅读 »

【搜索客社区日报】第1967期 (2025-01-08)

1.外行如何速成专家?Embedding之BM25、splade稀疏向量解读
https://mp.weixin.qq.com/s/hRTqMsX_eonRAqWVMwAU-w
2.RAG开发中,如何用Milvus 2.5 BM25算法实现混合搜索
https://mp.weixin.qq.com/s/Dsr4PkxcjoIfaPaWNrqJ7w
3.为RAG pipeline选择最佳的embedding模型
https://mp.weixin.qq.com/s/4h9duWccjOvCys8o2jq1GQ
4.日志审计系统到底是什么东东
https://mp.weixin.qq.com/s/Va8SZaaVMkBRh-RzSUPUlw


编辑:kin122 
更多资讯:http://news.searchkit.cn
继续阅读 »
1.外行如何速成专家?Embedding之BM25、splade稀疏向量解读
https://mp.weixin.qq.com/s/hRTqMsX_eonRAqWVMwAU-w
2.RAG开发中,如何用Milvus 2.5 BM25算法实现混合搜索
https://mp.weixin.qq.com/s/Dsr4PkxcjoIfaPaWNrqJ7w
3.为RAG pipeline选择最佳的embedding模型
https://mp.weixin.qq.com/s/4h9duWccjOvCys8o2jq1GQ
4.日志审计系统到底是什么东东
https://mp.weixin.qq.com/s/Va8SZaaVMkBRh-RzSUPUlw


编辑:kin122 
更多资讯:http://news.searchkit.cn 收起阅读 »

【搜索客社区日报】第1966期 (2024-01-07)


1. 有没想过用ES搞个天气预报牌啊?(需要梯子)
https://medium.com/%40rahul.fi ... c2698
1. 够浪日志专家是你吗?(需要梯子)
https://godfreyowidi.medium.co ... e9b54
1. 地理信息可视化你会不会(需要梯子)
https://medium.com/%40truongho ... 677eb
编辑:斯蒂文
更多资讯:http://news.searchkit.cn
 
继续阅读 »

1. 有没想过用ES搞个天气预报牌啊?(需要梯子)
https://medium.com/%40rahul.fi ... c2698
1. 够浪日志专家是你吗?(需要梯子)
https://godfreyowidi.medium.co ... e9b54
1. 地理信息可视化你会不会(需要梯子)
https://medium.com/%40truongho ... 677eb
编辑:斯蒂文
更多资讯:http://news.searchkit.cn
  收起阅读 »

【搜索客社区日报】第1965期 (2025-01-06)

1、极限网关案例分享(1):使用极限网关代替 Nginx 访问 ECE
https://infinilabs.cn/blog/202 ... ng-1/

2、Elasticsearch实战教程:如何使用集群索引数据来进行统计多个数据?
https://blog.csdn.net/qq_57761 ... 92484

3、Elasticsearch中的三种分页策略深度解析:原理、使用及对比
https://blog.csdn.net/qq_26664 ... 98228

4、探索 INFINI Console:提升 Elasticsearch 管理效率的新利器
https://mp.weixin.qq.com/s/bMAwMlRXJjuYSf9fV4MnsQ

5、2025 年,AI Agent 将如何变革?
https://mp.weixin.qq.com/s/c5eVtFdO4A2mr9Eqluk4VQ

编辑:Muse
更多资讯:http://news.searchkit.cn
继续阅读 »
1、极限网关案例分享(1):使用极限网关代替 Nginx 访问 ECE
https://infinilabs.cn/blog/202 ... ng-1/

2、Elasticsearch实战教程:如何使用集群索引数据来进行统计多个数据?
https://blog.csdn.net/qq_57761 ... 92484

3、Elasticsearch中的三种分页策略深度解析:原理、使用及对比
https://blog.csdn.net/qq_26664 ... 98228

4、探索 INFINI Console:提升 Elasticsearch 管理效率的新利器
https://mp.weixin.qq.com/s/bMAwMlRXJjuYSf9fV4MnsQ

5、2025 年,AI Agent 将如何变革?
https://mp.weixin.qq.com/s/c5eVtFdO4A2mr9Eqluk4VQ

编辑:Muse
更多资讯:http://news.searchkit.cn 收起阅读 »