【搜索客社区日报】第2031期 (2025-05-06)
社区日报 • God_lockin 发表了文章 • 0 个评论 • 668 次浏览 • 3 天前
1. 2025了,opensearch 和 elasticsearch 还能掰腕子吗(需要梯子)
https://medium.com/%40FrankGoo ... 33422
2. 解锁可观测性的封印,你得这么做(需要梯子)
https://ninad-desai.medium.com ... e0210
3. 保证生产稳定的妙招,“真实”模拟(需要梯子)
https://arshadeveloper.medium. ... 8f436
编辑:斯蒂文
更多资讯:http://news.searchkit.cn
【搜索客社区日报】第2032期 (2025-05-07)
社区日报 • kin122 发表了文章 • 0 个评论 • 512 次浏览 • 2 天前
https://mp.weixin.qq.com/s/pe9r6OSCI6l5ocUw1LHmMw
2.利用 NLP 的强大功能为 RAG 和 GraphRAG 应用程序构建混合图(搭梯)
https://medium.com/%40irina.ka ... e2adb
3.使用 LLM 将非结构化文本转换为交互式知识图谱(搭梯)
https://medium.com/%40robert-m ... 71cd6
编辑:kin122
更多资讯:http://news.searchkit.cn
Easysearch 时序数据的基于时间范围的合并策略
Easysearch • INFINI Labs 小助手 发表了文章 • 0 个评论 • 433 次浏览 • 1 天前
如果你正在使用 [Easysearch](https://docs.infinilabs.com/easysearch/main/) 处理日志、监控指标、事件流或其他任何具有时间顺序的数据,那么你一定知道索引的性能和效率至关重要。Easysearch 底层的 Lucene Segment 合并是保持搜索和索引性能的关键后台任务。然而,你是否意识到,默认的合并策略可能并不是处理时序数据的最佳选择?

今天,我们就来介绍 Easysearch 1.12.1 版本起引入的一个重要优化:基于时间范围的合并策略 (TimeRangeMergePolicy) ,它专门为优化时序数据的 Segment 合并而生。
时序数据的合并挑战:默认策略的局限性
Easysearch 默认使用的合并策略(如 TieredMergePolicy)非常智能,它会根据 Segment 的大小、文档删除比例等因素来决定合并哪些 Segment,以平衡查询性能和资源使用。
但在时序数据场景下,这种通用策略可能会遇到一些问题:
- 冷热数据混合: 想象一下,几个月前的旧日志数据(冷数据)可能因为大小合适而被选中,与最近几小时内产生的新数据(热数据)进行合并。这会带来不必要的 I/O 和 CPU 开销,因为冷数据通常访问很少,合并它们对查询性能的提升有限,反而消耗了宝贵的资源。
- 查询性能影响: 合并可能产生覆盖时间跨度非常大的 Segment。当你执行按时间范围过滤的查询时(这在时序场景中非常常见),查询可能需要扫描这些巨大的 Segment,即使其中大部分数据都不在你的目标时间范围内,从而降低查询效率。
解决方案:TimeRangeMergePolicy 登场!
为了解决上述痛点,Easysearch 引入了TimeRangeMergePolicy
。顾名思义,这种策略在做合并决策时,将时间维度纳入了核心考量。
它的核心思想很简单,但非常有效:
- 时间优先: 倾向于合并那些时间上相邻或接近的 Segment。比如,属于同一天或同一小时的 Segment 更有可能被一起合并。
- 保留时间分区: 尽量避免将时间跨度极大的 Segment 合并在一起。这有助于保持数据的“时间局部性”,使得按时间范围查询时能更快地排除不相关的 Segment。
- 优先合并新数据: 通常,新产生的数据(热数据)更新和删除操作更频繁。优先合并包含较新数据的 Segment,有助于更快地回收被删除文档占用的空间,并优化对最新数据的查询性能。
如何为你的时序索引启用 TimeRangeMergePolicy?
启用这个功能非常简单,只需要两步:
- 时间优先: 倾向于合并那些时间上相邻或接近的 Segment。比如,属于同一天或同一小时的 Segment 更有可能被一起合并。
- 确认日期字段: 首先,确保你的索引 Mapping 中有一个能准确代表数据时间的字段,通常是日期(
date
)或时间戳(date_nanos
)类型,例如@timestamp
、event_time
等。这个字段的值应该反映数据产生的实际时间。 - 更新索引设置: 使用 Index Settings API,为你的索引指定
index.merge.policy.time_range_field
参数,并将其值设置为你的时间字段名。
示例:
假设你的时间字段是timestamp
,索引名称是my-timeseries-index
,你可以执行以下请求:
auto<br /> PUT /my-timeseries-index/_settings<br /> {<br /> "index": {<br /> "merge.policy.time_range_field": "timestamp"<br /> }<br /> }<br />
搞定!设置之后,my-timeseries-index
后续的 Segment 合并就会自动采用TimeRangeMergePolicy
了。
专家提示: 如果你想让所有新创建的时序索引默认就使用这个策略,可以将这个设置添加到你的索引模板 (Index Template) 中。
TimeRangeMergePolicy 的优势
启用时间范围合并策略能带来哪些好处呢?
- 降低合并开销: 显著减少冷热数据的无效合并,节省 I/O 和 CPU 资源。
- 提高资源效率: 更智能的合并有助于更快地回收已删除文档的空间,并可能降低整体计算资源的使用。
- 优化查询性能: 保持 Segment 的时间局部性,对于按时间范围过滤的查询(例如,“查询过去一小时的日志”)可能会有明显的性能提升。
- 对时序数据更友好: 该策略的设计初衷就是为了更好地服务于日志、指标这类严格按时间增长的数据模式。
注意事项
在使用TimeRangeMergePolicy
时,有几点需要注意:
- 时间字段是关键: 策略的效果高度依赖于你所指定的
time_range_field
。如果该字段不存在,或者字段中的时间值混乱、不准确,策略可能无法发挥预期效果,甚至适得其反。 - 并非万能丹: 这个策略最适合具有明确时间序列特征的数据。对于非时序数据(例如,商品信息、用户信息索引),默认的
TieredMergePolicy
可能仍然是更好的选择。 - 版本要求: 请确保你的 Easysearch 集群版本至少为 1.12.1。
总结
对于处理大量时序数据的 Easysearch 用户来说,TimeRangeMergePolicy
是一个非常有价值的优化工具。通过感知数据的时间属性,它可以让 Segment 合并操作更加智能和高效,从而降低资源消耗、提升查询性能。如果你的索引符合时序数据的特征,并且正在运行 Easysearch 1.12.1 或更高版本,不妨尝试启用这个策略,看看它能否为你的集群带来改善!
关于 Easysearch
INFINI Easysearch 是一个分布式的搜索型数据库,实现非结构化数据检索、全文检索、向量检索、地理位置信息查询、组合索引查询、多语种支持、聚合分析等。Easysearch 可以完美替代 Elasticsearch,同时添加和完善多项企业级功能。Easysearch 助您拥有简洁、高效、易用的搜索体验。
官网文档:<https://docs.infinilabs.com/easysearch>
作者:张磊,极限科技(INFINI Labs)搜索引擎研发负责人,对 Elasticsearch 和 Lucene 源码比较熟悉,目前主要负责公司的 Easysearch 产品的研发以及客户服务工作。
原文:https://infinilabs.cn/blog/202 ... arch/
- 降低合并开销: 显著减少冷热数据的无效合并,节省 I/O 和 CPU 资源。
【搜索客社区日报】第2033期 (2025-05-08)
社区日报 • Se7en 发表了文章 • 0 个评论 • 152 次浏览 • 16 小时前
https://mp.weixin.qq.com/s/f53_CecLm_0oAihf5qHVew
2.vLLM + LWS:Kubernetes 上的多机多卡推理方案
https://mp.weixin.qq.com/s/RTSx9LqNuLZ_GPsrgbWDBw
3.MCP 最新版本 9 大差异解读:授权机制、传输协议、批处理、工具元数据...
https://mp.weixin.qq.com/s/xiZd0gHmLr3mNqHvU3Ca1w
4.训练100B模型要多少显存?
https://mp.weixin.qq.com/s/tdPrtsxOfnpyQzE25psdUQ
编辑:Se7en
更多资讯:http://news.searchkit.cn
INFINI Console 纳管 Elasticsearch 9(一):指标监控、数据管理、DSL 语句执行
Elasticsearch • INFINI Labs 小助手 发表了文章 • 0 个评论 • 145 次浏览 • 14 小时前
Elasticsearch v9.0 版本最近已发布,而 [INFINI Console](https://docs.infinilabs.com/console) 作为一款开源的非常轻量级的多集群、跨版本的搜索基础设施统一管控平台,是否支持最新的 Elasticsearch v9.0 集群管理呢?本文以 INFINI Console v1.29.2 为例,从指标监控、数据管理、DSL 语句执行等方面进行测试。
部署注册
使用 Docker 快速部署 ES9。
bash<br /> docker run --name es9 -p 9201:9200 -it -m 1GB docker.elastic.co/elasticsearch/elasticsearch:9.0.0<br />
使用 Docker 部署 Console,请参考[文档](https://docs.infinilabs.com/co ... ocker/)。
bash<br /> docker run -d --name console -p 9001:9000 infinilabs/console:1.29.2-2008<br />
将 ES9 注册到 Console,默认采集模式为 Agentless。


请求模拟
使用 [Loadgen](https://release.infinilabs.com/loadgen/stable/) 模拟数据写入和查询。
```bash
env:
ES_USERNAME: elastic
ES_PASSWORD: CZ-FHm+M5cbfee_yMPZp
ES_ENDPOINT: https://192.168.0.101:9201
runner:
total_rounds: 1
no_warm: true
valid_status_codes_during_warmup: [ 200,201,404 ]
Whether to log all requests
log_requests: false
Whether to log all requests with the specified response status
log_status_codes:
- 0
- 500
assert_invalid: false
assert_error: false
Whether to reset the context, including variables, runtime KV pairs, etc.,
before this test run.
reset_context: false
default_endpoint: $[[env.ES_ENDPOINT]]
default_basic_auth:
username: $[[env.ES_USERNAME]]
password: $[[env.ES_PASSWORD]]
variables:- name: id
type: sequence - name: uuid
type: uuid - name: now_local
type: now_local - name: now_unix
type: now_unix - name: list
type: list
data:
- "medcl"
- "abc"
- "efg"
- "xyz"
requests:
- "medcl"
- request: #prepare some docs
method: POST
url: /_bulk
body_repeat_times: 5000
body: |
{"index": {"_index": "infinilabs", "_id": "$[[uuid]]"}}
{"id": "$[[id]]", "field1": "$[[list]]", "now_local": "$[[now_local]]", "now_unix": "$[[now_unix]]"}
- request:
method: GET
url: infinilabs/_search
body: |
{"query":{"term":{"id":"$[[id]]"}}}
<br /> <br />
bash
./loadgen-mac-amd64 -d 300
```
平台管理
平台概览


监控报表
- 指标概览

- 集群指标

- 节点指标

- 索引指标

- 节点线程指标

- 节点热力图

- 索引热力图

- 查看日志

日志采集需要安装 Agent,关于这块功能后续会进行介绍。
- 节点实时指标

- 索引实时指标

数据管理

开发工具

总结
经过测试,INFINI Console 可以支持 Elasticsearch 9 集群纳管,大家可以下载体验使用。
关于 INFINI Console

INFINI Console 是一款开源的非常轻量级的多集群、跨版本的搜索基础设施统一管控平台。通过对流行的搜索引擎基础设施进行跨版本、多集群的集中纳管,企业可以快速方便的统一管理企业内部的不同版本的多套搜索集群。INFINI Console 还可以对集群内的索引及数据进行操作管理,可以配置灵活的告警规则,可以指定统一的安全策略,可以查看各个维度的日志和审计信息,真正实现企业级的搜索服务平台化建设和运营。
官网文档:<https://docs.infinilabs.com/console>
开源地址:<https://github.com/infinilabs/console>
原文:https://infinilabs.cn/blog/202 ... arch/
- name: id