如何在 Easysearch 中使用 Rollup 优化时序数据的存储和查询
Easysearch • INFINI Labs 小助手 发表了文章 • 0 个评论 • 2272 次浏览 • 2025-01-14 10:05
## 背景
在现代数据驱动的世界中,时序数据的处理变得越来越重要。无论是监控系统、日志分析,还是物联网设备的数据收集,时序数据都占据了大量的存储空间。随着时间的推移,这些数据的存储成本和管理复杂度也在不断增加。
为了解决这一问题,**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 功能支持以下聚合类型:
- **数值类型字段**:`avg`、`sum`、`max`、`min`、`value_count`、`percentiles`
- **keyword 类型字段**:`terms` 聚合
- **date 类型字段**:`date_histogram` 和 `date_range` 聚合
---
## Rollup 的核心参数详解
在配置 Rollup 任务时,以下几个参数至关重要:
### 1. **`metrics` 参数:定义需要聚合的数值字段**
`metrics` 参数用于指定哪些数值字段需要进行聚合计算。Rollup 任务会对这些字段进行指定的聚合操作(如 `avg`、`sum`、`max`、`min`、`value_count`、`percentiles`),并将结果存储到目标索引中。
#### 示例:
```json
"metrics": [
"payload.elasticsearch.index_stats.*"
]
```
在这个例子中,`metrics` 指定了对 `payload.elasticsearch.index_stats` 下的所有字段进行聚合。
---
### 2. **`attributes` 参数:保留原始数据的非聚合字段**
`attributes` 参数用于指定哪些字段需要原封不动地保留在 Rollup 结果中。这些字段不会被聚合,而是直接复制到目标索引中。
#### 示例:
```json
"attributes": [
"agent.*",
"metadata.*"
]
```
在这个例子中,`attributes` 指定了所有以 `agent.` 和 `metadata.` 开头的字段都会被保留到 Rollup 结果中。
---
### 3. **`exclude` 参数:排除不需要处理的字段**
`exclude` 参数用于排除某些字段,使其不参与 Rollup 任务。这些字段既不会被聚合,也不会被保留到目标索引中。
#### 示例:
```json
"exclude": ["payload.elasticsearch.index_stats.routing.*"]
```
在这个例子中,`exclude` 指定了 `payload.elasticsearch.index_stats.routing` 下的所有字段都不会被处理。
---
### 4. **`filter` 参数:过滤源数据**
`filter` 参数用于过滤源数据,只有符合过滤条件的文档才会被 Rollup 任务处理。这个参数可以帮助你减少需要处理的数据量,从而提高 Rollup 任务的效率。
#### 示例:
```json
"filter": {
"metadata.name": "index_stats"
}
```
在这个例子中,`filter` 指定了只有 `metadata.name` 字段值为 `index_stats` 的文档才会被 Rollup 任务处理。
---
### 5. **`identity` 参数:定义分组字段**
`identity` 参数用于指定哪些字段作为分组条件。Rollup 任务会根据这些字段的值对数据进行分组,然后在每个分组内进行聚合计算。
#### 功能:
- 定义数据分组的字段。
- 支持多个字段的组合,用于创建唯一的分组键。
- 常用于标识数据的来源或类别。
#### 示例:
```json
"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 天)等。
- 常用于按时间维度汇总数据。
#### 示例:
```json
"interval": "1m"
```
在这个例子中,`interval` 指定了时间聚合的间隔为 1 分钟。Rollup 任务会每分钟对数据进行一次聚合。
---
## 1.10 版本的新特性
从 Easysearch 1.10.0 版本开始,Rollup 功能引入了一些新特性,进一步增强了其灵活性和易用性。
### 1. **支持 `date_range` 聚合**
在 1.10.0 版本中,Rollup 增加了对 原始索引使用 `date_range` 聚合的支持。这意味着你可以在原始索引根据日期范围对数据进行聚合,而不仅仅是固定的时间间隔。
#### 示例:
```json
"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 任务。这大大简化了任务管理的操作。
#### 示例:
```json
POST _rollup/jobs/rollup*/_start
POST _rollup/jobs/rollup*/_stop
```
---
### 3. **设置 Rollup 索引自动滚动的条数**
你可以通过设置 `rollup.max_docs` 参数,控制 Rollup 索引自动滚动的条数。当索引中的文档数量达到设定值时,系统会自动创建一个新的 Rollup 索引。
#### 示例:
```json
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 个并发分片请求。
#### 示例:
```json
PUT /_cluster/settings
{
"transient": {
"rollup.search.max_count": 2
}
}
```
在这个例子中,`ROLLUP_SEARCH_MAX_COUNT` 被设置为 `2`,表示 Rollup 任务在执行搜索请求时,最多会同时发送 2 个并发分片请求。
#### 配置建议:
- **小规模集群**:建议设置为较小的值(如 `2`),以避免资源竞争。
- **大规模集群**:可以适当增加该值(如 `4`),以提高并发性能。
- **动态调整**:根据集群负载情况动态调整该值,以优化性能和资源利用率。
---
## 创建 Rollup 任务的完整示例
以下是一个完整的 Rollup 任务配置示例,展示了 `metrics`、`attributes`、`exclude` 和 `filter` 参数的综合使用:
```auto
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 搜索功能,需要设置
```auto
PUT /_cluster/settings
{
"transient": {
"rollup.search.enabled": true
}
}
```
无需特意搜索 rollup 索引,只需使用标准的 \_search API 对原始目标索引进行搜索。需要注意的是,查询时必须符合目标索引的约束条件。
以下是一个使用 Rollup 索引的示例:
```auto
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 功能不仅支持多种聚合类型,还提供了自动滚动索引、无缝查询等特性,极大地简化了时序数据的管理和分析流程。通过合理配置 `metrics`、`attributes`、`exclude` 和 `filter` 参数,你可以灵活地控制 Rollup 任务的行为,从而高效地处理时序数据。
如果你正在处理大量的时序数据,不妨尝试使用 Rollup 来优化你的数据存储和查询。通过本文的介绍,相信你已经对 Rollup 有了深入的了解。赶快动手试试吧,体验 Rollup 带来的高效与便捷!
**更详细的使用文档可在 [官网](https://www.infinilabs.cn/docs ... p_api/) 查看**
## 关于 Easysearch

INFINI Easysearch 是一个分布式的搜索型数据库,实现非结构化数据检索、全文检索、向量检索、地理位置信息查询、组合索引查询、多语种支持、聚合分析等。Easysearch 可以完美替代 Elasticsearch,同时添加和完善多项企业级功能。Easysearch 助您拥有简洁、高效、易用的搜索体验。
官网文档:<https://infinilabs.cn/docs/latest/easysearch>
> 作者:张磊,极限科技(INFINI Labs)搜索引擎研发负责人,对 Elasticsearch 和 Lucene 源码比较熟悉,目前主要负责公司的 Easysearch 产品的研发以及客户服务工作。
【搜索客社区日报】第1970期 (2025-01-13)
社区日报 • Muses 发表了文章 • 1 个评论 • 2280 次浏览 • 2025-01-13 09:14
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 能力等
资讯动态 • INFINI Labs 小助手 发表了文章 • 0 个评论 • 2218 次浏览 • 2025-01-12 16:38

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 指标功能](https://infinilabs.cn/blog/202 ... trics/)
**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](https://infinilabs.cn/blog/202 ... ollup/)
## 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 Console**
- https://docs.infinilabs.com/co ... otes/
- **INFINI Framework**
- https://docs.infinilabs.com/fr ... otes/
- **INFINI Easysearch**
- https://infinilabs.cn/docs/lat ... arch/
## 期待反馈
欢迎下载体验使用,如果您在使用过程中遇到如何疑问或者问题,欢迎前往 INFINI Labs Github(<https://github.com/infinilabs>) 中的对应项目中提交 Feature Request 或提交 Bug。
**下载地址:** <https://infinilabs.cn/download>
**邮件**:**hello@infini.ltd**
**电话**:**(+86) 400-139-9200**
**Discord**:<https://discord.gg/4tKTMkkvVX>
也欢迎大家微信扫码添加小助手(INFINI-Labs),加入用户群一起讨论交流。

## 关于极限科技(INFINI Labs)

极限科技,全称极限数据(北京)科技有限公司,是一家专注于实时搜索与数据分析的软件公司。旗下品牌极限实验室(INFINI Labs)致力于打造极致易用的数据探索与分析体验。
极限科技是一支年轻的团队,采用天然分布式的方式来进行远程协作,员工分布在全球各地,希望通过努力成为中国乃至全球企业大数据实时搜索分析产品的首选,为中国技术品牌输出添砖加瓦。
官网:<https://infinilabs.cn>
【搜索客社区日报】第1969期 (2025-01-10)
社区日报 • Fred2000 发表了文章 • 0 个评论 • 2469 次浏览 • 2025-01-10 12:19
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
是否可以在forcemerge时指定只清理一个段里的deleted文档,不合并2个段
Elasticsearch • Fred2000 回复了问题 • 2 人关注 • 1 个回复 • 2415 次浏览 • 2025-01-14 10:14
【搜索客社区日报】第1968期 (2025-01-09)
社区日报 • Se7en 发表了文章 • 0 个评论 • 2359 次浏览 • 2025-01-09 20:07
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)
社区日报 • kin122 发表了文章 • 0 个评论 • 2668 次浏览 • 2025-01-08 10:19
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)
社区日报 • God_lockin 发表了文章 • 0 个评论 • 2465 次浏览 • 2025-01-07 14:25
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)
社区日报 • Muses 发表了文章 • 0 个评论 • 2687 次浏览 • 2025-01-06 09:15
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
招聘 Elasticsearch 开发工程师 - Base 北京 - 极限科技(INFINI Labs)
求职招聘 • INFINI Labs 小助手 发表了文章 • 0 个评论 • 3224 次浏览 • 2025-01-03 18:37

「新岁启程,与君同行」极限科技诚招 Elasticsearch 开发工程师!
欢迎搜索技术热爱者加入我们,共同打造高效、智能的搜索解决方案!
如果你还不了解 极限科技(INFINI Labs) 是谁,在做什么,需要什么样的小伙伴,那么请看下文:
我们是谁

极限科技,全称极限数据(北京)科技有限公司,是一家专注于实时搜索与数据分析的软件公司。旗下品牌极限实验室(INFINI Labs)致力于打造极致易用的数据探索与分析体验。
极限科技是一支年轻的团队,采用天然分布式的方式来进行远程协作,员工分布在全球各地,希望通过努力成为中国乃至全球企业大数据实时搜索分析产品的首选,为中国技术品牌输出添砖加瓦。
官网:https://infinilabs.cn
我们在做什么
极限科技(INFINI Labs)正在致力于以下几个核心方向:
1、开发近实时搜索引擎 INFINI Easysearch
INFINI Easysearch 是一个分布式的搜索型数据库,实现非结构化数据检索、全文检索、向量检索、地理位置信息查询、组合索引查询、多语种支持、聚合分析等。Easysearch 可以完美替代 Elasticsearch,同时添加和完善多项企业级功能。Easysearch 助您拥有简洁、高效、易用的搜索体验。详情参见:https://infinilabs.cn
2、打造下一代实时搜索引擎 INFINI Pizza
INFINI Pizza 是一个分布式混合搜索数据库系统。我们的使命是充分利用现代硬件和人工智能的潜力,为企业提供量身定制的实时智能搜索体验。我们致力于满足具有挑战性的环境中高并发和高吞吐量的需求,同时提供无缝高效的搜索功能。详情参见:https://pizza.rs
3、打造 Coco AI — 搜索、连接、协作
Coco AI 是一个人工智能驱动的统一的搜索平台,将您的所有企业应用程序和数据(如 Google Workspace、Dropbox、Confluent Wiki、GitHub 等)整合到一个强大而简洁的搜索界面中。本项目包含适用于桌面和移动端的 COCO 应用,用户可以通过该应用在不同平台上搜索并与企业数据互动。详情参见:https://coco.rs
4、积极参与全球开源生态建设
通过开源 Coco AI、Console、Gateway、Agent、Loadgen 等搜索领域产品和社区贡献,推动全球开源技术的发展,提升中国在全球开源领域的影响力。INFINI Labs Github 主页:https://github.com/infinilabs
5、提供专业服务
为客户提供包括搜索技术支持、迁移服务、定制解决方案和培训在内的全方位服务。
6、提供国产化搜索解决方案
针对中国市场的特殊需求,提供符合国产化标准的搜索产品和解决方案,帮助客户解决使用 Elasticsearch 时遇到的挑战。
极限科技(INFINI Labs)通过这些努力,旨在成为全球领先的实时搜索和数据分析解决方案提供商。
在招岗位介绍
岗位名称
Elasticsearch 开发工程师
岗位职责
- 维护和开发基于 Elasticsearch 的搜索业务代码,优化搜索功能,提升用户体验;
- 深入研究 Elasticsearch 和 Lucene 内核,定制优化底层功能以满足业务需求;
- 优化索引策略、查询性能和存储效率,提升系统扩展性与稳定性;
- 负责搜索集群的配置、监控和维护,确保高可用性与安全性;
- 编写技术文档,与团队协作解决复杂问题,支持业务需求落地。
岗位要求
- 计算机相关专业,本科及以上学历,3 年以上 Elasticsearch 开发经验;
- 熟悉 Elasticsearch 和 Lucene 核心模块,掌握 Java 后端语言;
- 深入研究过 ES 或者 Lucene 代码,能基于 ES 开发插件;
- 深入理解全文检索原理、索引优化与查询性能调优;
- 有分布式系统开发经验,能够诊断并解决性能瓶颈;
- 有 Elasticsearch 二次开发或插件开发经验;
- 善于分析和解决问题,具备良好的沟通与协作能力;
- 北京全职,接受出差或客户现场驻场开发。
加分项
- 有自己的博客、Github、顶级开源项目贡献者优先;
- 有 Lucene 或者 Elasticsearch 源码 Commit 贡献优先;
- 有 Elastic Certified Engineer 认证优先;
- 有较强的学习能力,愿意致力于新技术的研究。
简历投递
- 邮件:hello@infini.ltd(邮件标题请备注姓名+求职岗位)
- 微信:INFINI-Labs (加微请备注求职岗位)

我们期待有才华、有激情的你加入我们,一起探索数据搜索的未来,共同创造无限可能!
【搜索客社区日报】第1964期 (2025-01-03)
社区日报 • Fred2000 发表了文章 • 0 个评论 • 2318 次浏览 • 2025-01-03 14:34
https://infinilabs.cn/blog/202 ... arch/
2、告别 Kibana:Elasticsearch 桌面客户端的新变革
https://mp.weixin.qq.com/s/xFUGhZ7RiIA5QqQHkoT7GQ
3、Elasticsearch 中副本和分片如何优化?
https://mp.weixin.qq.com/s/29i5dAWyYRfqaWxtt4x1Qg
4、优化混合搜索:在 OpenSearch 中提升搜索相关性的策略与实践
https://opensearch.org/blog/hy ... tion/
编辑:Fred
更多资讯:http://news.searchkit.cn
【搜索客社区日报】第1963期 (2024-12-31)
社区日报 • God_lockin 发表了文章 • 0 个评论 • 3489 次浏览 • 2025-01-01 10:09
1. 在SpringBoot里用注解生成ES index(需要梯子)
https://serdaralkancode.medium ... 807a8
2. ES 里的数据摄取管道(需要梯子)
https://medium.com/%40imadsadd ... c97ae
3. Docker 里的ES和kibana的安全设置(需要梯子)
https://umasrinivask.medium.co ... cb3fd
编辑:斯蒂文
更多资讯:http://news.searchkit.cn
从 Elastic 迁移到 Easysearch 指引
Easysearch • yangmf2040 发表了文章 • 0 个评论 • 2831 次浏览 • 2024-12-30 16:44
从 Elasticsearch 迁移到 [Easysearch](https://infinilabs.cn/products/easysearch/) 需要考虑多个方面,这取决于当前使用的 Elasticsearch 版本、能容忍的停机时间、应用需求等。在此背景下,我们梳理了一下通用的升级指引,方便大家进行迁移工作。
迁移路径
| Elasticsearch 版本 | 快照兼容 | 推荐升级方法 |
| ---------------------- | ------------ | ------------------------ |
| 5.x | ❌ | 使用 INFINI Console 迁移 |
| 6.x | ✅ | 快照恢复迁移 |
| 7.0.0 - 7.10.2 | ✅ | 快照恢复迁移 |
| >7.11.0 | ❌ | 使用 INFINI Console 迁移 |
之前有同事做过相关测试,详情请移步[这里](https://infinilabs.cn/blog/202 ... store/)。
快照恢复迁移
- 部署新的 Easysearch 集群,如果有使用插件(如 IK),也一并安装。
- 将备份仓库注册到 Easysearch 集群。
- 在 Easysearch 中设置需要使用的用户名和密码信息。
- 原 Elasticsearch 集群进行快照备份。
- 在 Easysearch 集群中进行备份还原。
- 另部署一套应用连接 Easysearch 集群,进行数据、功能验证。
- 停止应用写入新的数据到 Elasticsearch。
- 原 Elasticsearch 集群进行快照备份。
- 在 Easysearch 集群中进行备份还原。
- 再次使用应用验证数据、功能正常。
- 切换,老应用下线使用新应用或者老应用修改地址连接 Easysearch 集群。
INFINI Console 迁移
- 部署新的 Easysearch 集群及其插件(如 IK)。
- 部署 INFINI Console、Gateway 程序。
- 将 Elasticsearch 和 Easysearch 注册到 INFINI Console 中。
- 在 Easysearch 中设置需要使用的用户名和密码信息。
- 建立数据迁移任务,对业务索引进行迁移,建议启用压缩功能。
- 另部署一套应用连接 Easysearch 集群,进行数据、功能验证。
- 停止应用写入新的数据到 Elasticsearch。
- 再次建立数据迁移任务,设置条件,只迁移增量数据。
- 再次使用应用验证数据、功能正常。
- 切换,老应用下线使用新应用或者老应用修改地址连接 Easysearch 集群。
客户端调整
如果要继续使用 Java High Level REST Client,建议将版本调整到 7.10.2 。当然更建议的是使用 Easysearch 的[客户端](https://infinilabs.cn/blog/202 ... ent-1/),更轻更快,构建查询,跟搭积木一样简单。
开源事业
[极限科技(INFINI Labs)](https://infinilabs.cn) 一直致力于为开发者和企业提供优质的开源工具,提升整个技术生态的活力。除了维护国内最流行的分词器 analysis-ik 和 analysis-pinyin ,也在不断推动更多高质量开源产品的诞生。
在极限科技成立三周年之际,公司宣布以下产品和工具已全面开源:
- [INFINI Framework](https://github.com/infinilabs/framework)
- [INFINI Gateway](https://github.com/infinilabs/gateway)
- [INFINI Console](https://github.com/infinilabs/console)
- [INFINI Agent](https://github.com/infinilabs/agent)
- [INFINI Loadgen](https://github.com/infinilabs/loadgen)
- [INFINI Coco AI](https://github.com/infinilabs/coco-app)
以上开源软件都可以在 Github 上面找到:[https://github.com/infinilabs](https://github.com/infinilabs)
欢迎大家一起参与到开源工具的维护、贡献当中来,别忘了 Star🌟 支持一下!!!
如果您对迁移过程有任何疑问,欢迎与我讨论。

- [INFINI Framework](https://github.com/infinilabs/framework)
Easysearch 可搜索快照功能,看这篇就够了
Easysearch • yangmf2040 发表了文章 • 0 个评论 • 2664 次浏览 • 2024-12-30 16:38
可搜索快照功能改变了我们对备份数据的查询方式。以往要查询备份数据时,要先找到备份数据所在的快照,然后在一个合适的环境中恢复快照,最后再发起请求查询数据。这个处理路径很长,而且很消耗时间。可搜索快照功能将大大简化该处理路径,节约时间。
角色设置
相信你对节点角色的概念已经有所熟悉。要启用可搜索快照功能,[Easysearch](https://infinilabs.cn/products/easysearch/) 集群中必须至少有一个节点拥有 search 角色。参考设置如下。
plain<br /> node.roles: ["search"]<br /> node.search.cache.size: 500mb<br />
- node.roles: 指定节点角色,只有 search 角色的节点才能去搜索快照中的数据。
- node.search.cache.size: 执行快照搜索时,数据缓存大小。
混合角色设置,参考如下。
plain<br /> node.roles: ["master","data","search","ingest"]<br /> node.search.cache.size: 500mb<br />
创建快照
可搜索快照功能使用普通快照作为基础,创建快照命令不变。比如我创建且备份个 infini 索引。
```plain创建 infini 索引
POST infini/_doc
{
"test":"Searchable snapshots"
}
创建快照备份 infini 索引
PUT _snapshot/my-fs-repository/1
{
"indices": "infini",
"include_global_state": false
}
```

创建快照索引
可搜索快照功能的核心是搜索快照中的索引,这一步是通过快照索引实现的。为了和集群中的普通索引区别开来,我们将实际存储在快照中的索引称为快照索引。通过使用 Easysearch 的 _restore API 并指定 remote_snapshot 存储类型来创建快照索引。
创建快照索引时,注意名称不能与当前索引名称重复。通常我们备份完索引后,可删除索引释放节点磁盘空间,创建快照索引时默认使用原来的名称。
```plain删除 infini 索引释放磁盘空间
DELETE infini
创建快照索引,使用原索引名称
POST /_snapshot/my-fs-repository/1/_restore
{
"indices": "infini",
"include_global_state": false,
"include_aliases": false,
"storage_type": "remote_snapshot"
}
<br /> <br /> 创建快照索引的命令和还原快照的命令非常相似,关键在于 storage_type 参数指定 remote_snapshot 存储类型。<br /> <br /> 如果要将快照中的全部索引都创建快照索引,可省略 indices 参数。<br /> <br /> <br /> <br /> 如果想在创建快照索引时指定不同的名字,参考下面的命令。<br /> <br />
plain
POST /_snapshot/my-fs-repository/1/_restore
{
"indices": "infini",
"include_global_state": false,
"include_aliases": false,
"storage_type": "remote_snapshot",
"rename_pattern": "(infini)",
"rename_replacement": "snapshot-$1"
}
```
- rename_pattern: 使用此选项指定索引匹配的正则表达式。使用捕获组重用索引名称的部分。
- rename_replacement: 使用 $0 包括整个匹配索引名称,使用 $1 包括第一个捕获组的内容,等等。
上述命令创建出来的快照索引名称是 snapshot-infini 。

经过上面一系列的操作,我已经拥有了两个快照索引。
搜索快照索引
我们通过搜索快照索引达到搜索快照数据的目的,令人开心的是搜索快照索引和搜索普通索引的语法完全一样。😀

常见问题
如何区分普通索引和快照索引呢?
我们可以通过索引的 settings 信息区分,快照索引的 settings 信息中有 store.type: remote_snapshot 信息,普通索引没有此信息。

快照索引能写入数据吗?
快照索引无法写入,数据仍然保持在快照格式中存储在存储库中,因此可搜索快照索引本质上是只读的。 任何尝试写入可搜索快照索引的操作都会导致错误。

快照索引不想要了怎么办?
直接删除,需要时再执行创建快照索引流程。此外快照在创建快照索引后,无法直接删除快照,要先删除快照索引。

如果您对上述内容有任何疑问,欢迎与我讨论。

【搜索客社区日报】第1962期 (2024-12-30)
社区日报 • Muses 发表了文章 • 0 个评论 • 2638 次浏览 • 2024-12-30 13:34
https://infinilabs.cn/blog/202 ... icle/
2、Spring Boot 集成 Easysearch 完整指南
https://infinilabs.cn/blog/202 ... tion/
3、DeepSeek-V3 是怎么训练的|深度拆解
https://mp.weixin.qq.com/s/2M_f2ow3rfarr-vLeKbVCA
4、一文讲透 AI Agent 与 AI Workflow 的区别和深度解析:从自动化到智能化的演进
https://mp.weixin.qq.com/s/GCifbH9wGdPysu1z-n3KDA
5、从ES的JVM配置起步思考JVM常见参数优化
https://blog.csdn.net/xiaofeng ... 39510
编辑:Muse
更多资讯:http://news.searchkit.cn