The requested URL was not found on this server. 不管你信不信,反正我是没找到

【搜索客社区日报 】第1879期 (2024-08-12)

 
🎉 活动预告:
【8月17日】第2期 Easysearch 免费认证培训开放报名啦,搜索客社区邀请大家报名参与,共同探索 Easysearch 的无限可能,开启搜索技术进阶的新篇章!
https://elasticsearch.cn/article/15226

 1. 如何设计一个数据标注系统
https://bbs.huaweicloud.com/blogs/393224

2. 智谱AI杀入视频生成:「清影」上线,时长6秒,免费不限量
https://www.jiqizhixin.com/articles/2024-07-26-7

3. 旧物利用 - 将机顶盒改造为一台Linux开发机!
https://www.cnblogs.com/onecainiao/p/18353586

4. 2024年海内外数据库技术演进深度解析:大数据浪潮下数据库的演进
https://www.vzkoo.com/read/202 ... .html

5. 十分钟学会使用 Elasticsearch 优雅搭建自己的搜索系统(附源码)
https://developer.aliyun.com/article/870908

编辑:Muse
更多资讯:http://news.searchkit.cn
继续阅读 »
 
🎉 活动预告:
【8月17日】第2期 Easysearch 免费认证培训开放报名啦,搜索客社区邀请大家报名参与,共同探索 Easysearch 的无限可能,开启搜索技术进阶的新篇章!
https://elasticsearch.cn/article/15226

 1. 如何设计一个数据标注系统
https://bbs.huaweicloud.com/blogs/393224

2. 智谱AI杀入视频生成:「清影」上线,时长6秒,免费不限量
https://www.jiqizhixin.com/articles/2024-07-26-7

3. 旧物利用 - 将机顶盒改造为一台Linux开发机!
https://www.cnblogs.com/onecainiao/p/18353586

4. 2024年海内外数据库技术演进深度解析:大数据浪潮下数据库的演进
https://www.vzkoo.com/read/202 ... .html

5. 十分钟学会使用 Elasticsearch 优雅搭建自己的搜索系统(附源码)
https://developer.aliyun.com/article/870908

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

【搜索客社区日报】第1878期 (2024-08-09)

1、从大数据到大模型:搜索推荐技术的前沿探索
https://mp.weixin.qq.com/s/uoYfm5SjM4VRHPj1xjEd-A

2、MindSearch: 模仿人类思维的LLM搜索工具|论文分享
https://mp.weixin.qq.com/s/FwhyaKdBBSgJBcGIYqeI9A

3、AI 搜索产品+1,实测 MindSearch 产品效果及代码实现
https://mp.weixin.qq.com/s/FFFgsqJEw9fV6bwXSHkrrg

4、Elasticsearch 磁盘空间异常:一次成功的故障排除案例分享
https://infinilabs.cn/blog/202 ... rmal/

5、万亿赛道!向量数据库--AI 大模型技术底座解决方案深度分析 2024
https://blog.csdn.net/m0_59235 ... 87037

编辑:Fred 
更多资讯:http://news.searchkit.cn
继续阅读 »
1、从大数据到大模型:搜索推荐技术的前沿探索
https://mp.weixin.qq.com/s/uoYfm5SjM4VRHPj1xjEd-A

2、MindSearch: 模仿人类思维的LLM搜索工具|论文分享
https://mp.weixin.qq.com/s/FwhyaKdBBSgJBcGIYqeI9A

3、AI 搜索产品+1,实测 MindSearch 产品效果及代码实现
https://mp.weixin.qq.com/s/FFFgsqJEw9fV6bwXSHkrrg

4、Elasticsearch 磁盘空间异常:一次成功的故障排除案例分享
https://infinilabs.cn/blog/202 ... rmal/

5、万亿赛道!向量数据库--AI 大模型技术底座解决方案深度分析 2024
https://blog.csdn.net/m0_59235 ... 87037

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

【第2期】INFINI Easysearch 免费认证培训开放报名啦

微信公众号封面.png

探索 Easysearch 的无限可能,与 INFINI Labs 共赴搜索技术前沿!

随着数字化转型的加速,搜索技术已成为企业数据洞察的核心。INFINI Labs 作为搜索创新技术的引领者,诚邀所有对 Easysearch 搜索引擎感兴趣的开发者、技术爱好者及合作伙伴,参加我们即将于 2024 年 8 月 17 日至 18 日举办的 第二期 Easysearch 线上免费培训活动。这不仅是一场知识的盛宴,更是技能提升的加速器,将助您在职业道路上迈出坚实的一步!

活动亮点

  • 系统课程,全面深入:从 Easysearch 的基本概念到环境搭建,再到高级功能的实战应用,INFINI Labs 的技术专家将为您带来全面而深入的讲解,确保每位参与者都能收获满满。
  • 实战导向,解决痛点:课程设计紧贴实际需求,旨在帮助学员掌握 Easysearch 的核心技术,有效解决工作中的搜索需求和技术难题,让理论知识迅速转化为实践能力。
  • 认证证书,助力进阶:后期 INFINI Labs 将推出 Easysearch 认证考试。通过考试的学员将获得官方认证的 Easysearch 证书,为您的职业发展增添强力背书,开启职业生涯的新篇章。

培训时间

2024 年 8 月 17 日至 18 日(周六、周日)共两天,每天具体培训时间:

  • 上午 09:30 ~ 11:30
  • 下午 14:00 ~ 16:00

培训内容概览

第一阶段:初识 Easysearch

  • Easysearch 环境搭建与对比,了解其与 Elasticsearch 的差异;
  • 功能初探:身份验证、数据脱敏、权限控制等,全面掌握 Easysearch 的基础功能;
  • 容灾技术:兼容性验证、跨集群复制等,确保您的搜索服务稳定可靠;

第二阶段:Easysearch 高阶使用

  • 深度探析:性能压测、数据迁移、请求管理等,提升 Easysearch 的使用效率;
  • 高级功能:快照管理、可视化看板、告警功能等,让您的搜索服务更加智能;
  • 生态集成:Filebeat、Logstash、LangChain 等,轻松实现 Easysearch 与其他工具的集成;

参与方式

本次活动完全免费,名额有限,请尽快报名,同时微信扫码添加小助手进群(培训会议地址将在微信群公布),锁定您的学习席位!

扫码或点击 我要报名

报名

👉 立即行动:不要错过这次提升自我、与行业精英共成长的宝贵机会。让我们相聚云端,共同探索 Easysearch 的无限可能,开启技术进阶的新篇章!

参会提示

  • 培训内容涉及动手实践,请务必自备电脑(Windows 系统环境请提前安装好 Linux 虚拟机);
  • 请提前在 INFINI Labs 官网下载对应平台最新安装包(INFINI Easysearch、INFINI Gateway、INFINI Console);
  • 下载地址:https://infinilabs.cn/download

联系我们

如有任何疑问,欢迎通过微信添加 [小助手:INFINI-Labs] 与我们联系。

INFINI Labs 期待与您相约,共赴这场技术盛宴!

关于 Easysearch

Easysearch

Easysearch 是一个分布式的近实时搜索与分析引擎,基于开源的 Apache Lucene 构建。它旨在提供一个自主可控、轻量级的 Elasticsearch 可替代版本,并不断完善和支持更多的企业级功能。与 Elasticsearch 相比,Easysearch 更注重搜索业务场景的优化,同时保持其产品的简洁与易用性。

详情参见:Easysearch 介绍

Easysearch 有奖征文活动推荐

黑神话悟空

无论你是 Easysearch 的老用户,还是第一次听说这个名字,只要你对 INFINI Labs 旗下的 Easysearch 产品感兴趣,或者是希望了解 Easysearch,都可以参加这次活动。

详情查看:Easysearch 征文活动

关于极限科技(INFINI Labs)

INFINI Labs

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

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

官网:https://infinilabs.cn

继续阅读 »

微信公众号封面.png

探索 Easysearch 的无限可能,与 INFINI Labs 共赴搜索技术前沿!

随着数字化转型的加速,搜索技术已成为企业数据洞察的核心。INFINI Labs 作为搜索创新技术的引领者,诚邀所有对 Easysearch 搜索引擎感兴趣的开发者、技术爱好者及合作伙伴,参加我们即将于 2024 年 8 月 17 日至 18 日举办的 第二期 Easysearch 线上免费培训活动。这不仅是一场知识的盛宴,更是技能提升的加速器,将助您在职业道路上迈出坚实的一步!

活动亮点

  • 系统课程,全面深入:从 Easysearch 的基本概念到环境搭建,再到高级功能的实战应用,INFINI Labs 的技术专家将为您带来全面而深入的讲解,确保每位参与者都能收获满满。
  • 实战导向,解决痛点:课程设计紧贴实际需求,旨在帮助学员掌握 Easysearch 的核心技术,有效解决工作中的搜索需求和技术难题,让理论知识迅速转化为实践能力。
  • 认证证书,助力进阶:后期 INFINI Labs 将推出 Easysearch 认证考试。通过考试的学员将获得官方认证的 Easysearch 证书,为您的职业发展增添强力背书,开启职业生涯的新篇章。

培训时间

2024 年 8 月 17 日至 18 日(周六、周日)共两天,每天具体培训时间:

  • 上午 09:30 ~ 11:30
  • 下午 14:00 ~ 16:00

培训内容概览

第一阶段:初识 Easysearch

  • Easysearch 环境搭建与对比,了解其与 Elasticsearch 的差异;
  • 功能初探:身份验证、数据脱敏、权限控制等,全面掌握 Easysearch 的基础功能;
  • 容灾技术:兼容性验证、跨集群复制等,确保您的搜索服务稳定可靠;

第二阶段:Easysearch 高阶使用

  • 深度探析:性能压测、数据迁移、请求管理等,提升 Easysearch 的使用效率;
  • 高级功能:快照管理、可视化看板、告警功能等,让您的搜索服务更加智能;
  • 生态集成:Filebeat、Logstash、LangChain 等,轻松实现 Easysearch 与其他工具的集成;

参与方式

本次活动完全免费,名额有限,请尽快报名,同时微信扫码添加小助手进群(培训会议地址将在微信群公布),锁定您的学习席位!

扫码或点击 我要报名

报名

👉 立即行动:不要错过这次提升自我、与行业精英共成长的宝贵机会。让我们相聚云端,共同探索 Easysearch 的无限可能,开启技术进阶的新篇章!

参会提示

  • 培训内容涉及动手实践,请务必自备电脑(Windows 系统环境请提前安装好 Linux 虚拟机);
  • 请提前在 INFINI Labs 官网下载对应平台最新安装包(INFINI Easysearch、INFINI Gateway、INFINI Console);
  • 下载地址:https://infinilabs.cn/download

联系我们

如有任何疑问,欢迎通过微信添加 [小助手:INFINI-Labs] 与我们联系。

INFINI Labs 期待与您相约,共赴这场技术盛宴!

关于 Easysearch

Easysearch

Easysearch 是一个分布式的近实时搜索与分析引擎,基于开源的 Apache Lucene 构建。它旨在提供一个自主可控、轻量级的 Elasticsearch 可替代版本,并不断完善和支持更多的企业级功能。与 Elasticsearch 相比,Easysearch 更注重搜索业务场景的优化,同时保持其产品的简洁与易用性。

详情参见:Easysearch 介绍

Easysearch 有奖征文活动推荐

黑神话悟空

无论你是 Easysearch 的老用户,还是第一次听说这个名字,只要你对 INFINI Labs 旗下的 Easysearch 产品感兴趣,或者是希望了解 Easysearch,都可以参加这次活动。

详情查看:Easysearch 征文活动

关于极限科技(INFINI Labs)

INFINI Labs

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

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

官网:https://infinilabs.cn

收起阅读 »

Elasticsearch 磁盘空间异常:一次成功的故障排除案例分享

故障现象

近日有客户找到我们,说有个 ES 集群节点,磁盘利用率达到了 82% ,而其节点才 63% ,想处理下这个节点,降低节点的磁盘利用率。

起初以为是没有打开自动平衡导致的,经查询,数据还是比较平衡的。 利用率较高的是 76 节点,如果 76 节点的分片比其他节点多,好像还比较合乎逻辑,但它反而比其他节点少了 12-15 个分片。那是 76 节点上的分片比较大?

索引情况

图中都是较大的索引,1 个索引 25TB 左右,共 160 个分片。

分片大小

节点 64 节点 77 节点 75 问题节点 76 可以看出分片大小没有出现较大的倾斜,分片大小和数据平衡的原因都被排除。

换个方向思考,节点 76 比其他节点多使用了磁盘空间 8 个 TB 左右,集群最大分片大小约 140GB ,8000/140=57 ,即节点 76 至少要比其他节点多 57 个分片才行,啊这...

会不会有其他的文件占用了磁盘空间?

我们登录到节点主机,排查是否有其他文件占用了磁盘空间。

结果:客户的数据路径是单独的数据磁盘,并没有其他文件,都是 ES 集群索引占用的空间。

现象总结

分片大小差不多的情况下,节点 76 的分片数还比别的节点还少 10 个左右,它的磁盘空间反而多占用了 8TB 。

这是不是太奇怪了?事出反常必有妖,继续往下查。

原因定位

通过进一步排查,我们发现节点 76 上有一批索引目录,在其他的节点上没有,而且也不在 GET \_cat/indices?v 命令的结果中。说明这些目录都是 dangling 索引占用的。

dangling 索引产生的原因

当 Elasticsearch 节点脱机时,如果删除的索引数量超过 Cluster.indes.tombstones.size,就会发生这种情况。

解决方案

通过命令删除 dangling 索引:

DELETE /\_dangling/<index-uuid>?accept_data_loss=true

最后

这次的分享就到这里了,欢迎与我一起交流 ES 的各种问题和解决方案。

关于极限科技(INFINI Labs)

INFINI Labs

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

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

官网:https://infinilabs.cn

继续阅读 »

故障现象

近日有客户找到我们,说有个 ES 集群节点,磁盘利用率达到了 82% ,而其节点才 63% ,想处理下这个节点,降低节点的磁盘利用率。

起初以为是没有打开自动平衡导致的,经查询,数据还是比较平衡的。 利用率较高的是 76 节点,如果 76 节点的分片比其他节点多,好像还比较合乎逻辑,但它反而比其他节点少了 12-15 个分片。那是 76 节点上的分片比较大?

索引情况

图中都是较大的索引,1 个索引 25TB 左右,共 160 个分片。

分片大小

节点 64 节点 77 节点 75 问题节点 76 可以看出分片大小没有出现较大的倾斜,分片大小和数据平衡的原因都被排除。

换个方向思考,节点 76 比其他节点多使用了磁盘空间 8 个 TB 左右,集群最大分片大小约 140GB ,8000/140=57 ,即节点 76 至少要比其他节点多 57 个分片才行,啊这...

会不会有其他的文件占用了磁盘空间?

我们登录到节点主机,排查是否有其他文件占用了磁盘空间。

结果:客户的数据路径是单独的数据磁盘,并没有其他文件,都是 ES 集群索引占用的空间。

现象总结

分片大小差不多的情况下,节点 76 的分片数还比别的节点还少 10 个左右,它的磁盘空间反而多占用了 8TB 。

这是不是太奇怪了?事出反常必有妖,继续往下查。

原因定位

通过进一步排查,我们发现节点 76 上有一批索引目录,在其他的节点上没有,而且也不在 GET \_cat/indices?v 命令的结果中。说明这些目录都是 dangling 索引占用的。

dangling 索引产生的原因

当 Elasticsearch 节点脱机时,如果删除的索引数量超过 Cluster.indes.tombstones.size,就会发生这种情况。

解决方案

通过命令删除 dangling 索引:

DELETE /\_dangling/<index-uuid>?accept_data_loss=true

最后

这次的分享就到这里了,欢迎与我一起交流 ES 的各种问题和解决方案。

关于极限科技(INFINI Labs)

INFINI Labs

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

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

官网:https://infinilabs.cn

收起阅读 »

【搜索客社区日报】第1877期 (2024-08-08)

1.实战从零开始实现Raft|得物技术
https://mp.weixin.qq.com/s/R2XXYFoR67VsiGwT6XM96A
2.跟着 iLogtail 学习高质量软件建设
https://mp.weixin.qq.com/s/c4siqtB1z9PDQ-N8bWRG5Q
3.如何在生成式AI里使用 Ray Data 进行大规模 RAG 应用的 Embedding Inference
https://mp.weixin.qq.com/s/HMu5XlMsZLOh9y5KtwzHWw
4.2 万 star 开发者瑞士军刀!!! 几百种工具绝对能满足你
https://mp.weixin.qq.com/s/zsuwoIOsVKX__NAp34uYBw
5.DeepSeek API 创新采用硬盘缓存,价格再降一个数量级
https://platform.deepseek.com/ ... 0802/

编辑:Se7en  
更多资讯:http://news.searchkit.cn
继续阅读 »
1.实战从零开始实现Raft|得物技术
https://mp.weixin.qq.com/s/R2XXYFoR67VsiGwT6XM96A
2.跟着 iLogtail 学习高质量软件建设
https://mp.weixin.qq.com/s/c4siqtB1z9PDQ-N8bWRG5Q
3.如何在生成式AI里使用 Ray Data 进行大规模 RAG 应用的 Embedding Inference
https://mp.weixin.qq.com/s/HMu5XlMsZLOh9y5KtwzHWw
4.2 万 star 开发者瑞士军刀!!! 几百种工具绝对能满足你
https://mp.weixin.qq.com/s/zsuwoIOsVKX__NAp34uYBw
5.DeepSeek API 创新采用硬盘缓存,价格再降一个数量级
https://platform.deepseek.com/ ... 0802/

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

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

1.使用 ChatGPT 构建知识图谱(搭梯)
https://medium.com/%40dalleman ... 83e8a
2.如何将任何文本转换成概念图(搭梯)
https://medium.com/%40lamslide ... ff732
3.Observerbility:使用 Elastic 中的 GenAI 进行 NGINX 日志分析
https://www.elastic.co/observa ... astic


编辑:kin122 
更多资讯:http://news.searchkit.cn
继续阅读 »
1.使用 ChatGPT 构建知识图谱(搭梯)
https://medium.com/%40dalleman ... 83e8a
2.如何将任何文本转换成概念图(搭梯)
https://medium.com/%40lamslide ... ff732
3.Observerbility:使用 Elastic 中的 GenAI 进行 NGINX 日志分析
https://www.elastic.co/observa ... astic


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

【搜索客社区日报】第1875期 (2024-08-06)

1. 优化es磁盘使用的小技巧(需要梯子)
https://medium.com/%40usetech/ ... d5ede
2. Opensearch VS Elasticsearch(需要梯子)
https://medium.com/%40akcoding ... 0ae6a
3. “美丽”搜索能成为es的平替吗?
https://github.com/meilisearch/meilisearch
 
编辑:斯蒂文
更多资讯:http://news.searchkit.cn
 
继续阅读 »
1. 优化es磁盘使用的小技巧(需要梯子)
https://medium.com/%40usetech/ ... d5ede
2. Opensearch VS Elasticsearch(需要梯子)
https://medium.com/%40akcoding ... 0ae6a
3. “美丽”搜索能成为es的平替吗?
https://github.com/meilisearch/meilisearch
 
编辑:斯蒂文
更多资讯:http://news.searchkit.cn
  收起阅读 »

【第2期】2024 搜索客 Meetup | Elasticsearch 的代码结构和写入查询流程的解读

本次活动由 搜索客社区、极限科技(INFINI Labs)联合举办,活动主题将深入探讨 Elasticsearch 的两个核心方面:代码结构以及写入和查询的关键流程。本次活动将为 Elasticsearch 初学者和有经验的用户提供宝贵的见解,欢迎大家报名参加、交流学习。

活动主题:Elasticsearch 的代码结构和写入查询流程的解读
活动时间:2024 年 8 月 14 日 19:00-20:00(周三)
活动形式:微信视频号(极限实验室)直播
报名方式:关注或扫码海报中的二维码进行预约

嘉宾介绍

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

主题摘要

本次分享将探讨 Elasticsearch 的代码结构及其写入和查询流程。内容包括:项目架构、核心模块、插件系统,以及文档索引和查询的各个阶段与分布式查询协调。

活动亮点

  1. 深入解析 Elasticsearch 代码结构

    • 项目的整体结构:了解 Elasticsearch 项目的组织方式。
    • 核心模块及其职责:学习 Elasticsearch 的核心模块及其在系统中的具体角色。
    • 插件系统的设计:探索 Elasticsearch 灵活的插件系统设计及其扩展方式。
  2. 详细解读 Elasticsearch 写入和查询流程

    • 文档索引过程的各个阶段:跟随文档从初始接收至最终存储的索引过程。
    • 查询解析和执行的步骤:理解 Elasticsearch 中查询解析和执行的各个步骤。
    • 分布式查询的协调过程:学习 Elasticsearch 如何在分布式架构中协调查询,以提供高效且准确的搜索结果。

参与有奖

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

活动交流

活动交流群二维码 7 天内(8 月 12 日前)有效,如过期请添加小助手微信拉群。

本次 Meetup 是深入了解 Elasticsearch 内部工作机制、提升使用技能的绝佳机会。不要错过!

Meetup 讲师招募

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

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

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

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

往期回顾

【第 1 期】2024 搜索客 Meetup | Easysearch 结合大模型实现 RAG

关于 搜索客(SearchKit)社区

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

继续阅读 »

本次活动由 搜索客社区、极限科技(INFINI Labs)联合举办,活动主题将深入探讨 Elasticsearch 的两个核心方面:代码结构以及写入和查询的关键流程。本次活动将为 Elasticsearch 初学者和有经验的用户提供宝贵的见解,欢迎大家报名参加、交流学习。

活动主题:Elasticsearch 的代码结构和写入查询流程的解读
活动时间:2024 年 8 月 14 日 19:00-20:00(周三)
活动形式:微信视频号(极限实验室)直播
报名方式:关注或扫码海报中的二维码进行预约

嘉宾介绍

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

主题摘要

本次分享将探讨 Elasticsearch 的代码结构及其写入和查询流程。内容包括:项目架构、核心模块、插件系统,以及文档索引和查询的各个阶段与分布式查询协调。

活动亮点

  1. 深入解析 Elasticsearch 代码结构

    • 项目的整体结构:了解 Elasticsearch 项目的组织方式。
    • 核心模块及其职责:学习 Elasticsearch 的核心模块及其在系统中的具体角色。
    • 插件系统的设计:探索 Elasticsearch 灵活的插件系统设计及其扩展方式。
  2. 详细解读 Elasticsearch 写入和查询流程

    • 文档索引过程的各个阶段:跟随文档从初始接收至最终存储的索引过程。
    • 查询解析和执行的步骤:理解 Elasticsearch 中查询解析和执行的各个步骤。
    • 分布式查询的协调过程:学习 Elasticsearch 如何在分布式架构中协调查询,以提供高效且准确的搜索结果。

参与有奖

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

活动交流

活动交流群二维码 7 天内(8 月 12 日前)有效,如过期请添加小助手微信拉群。

本次 Meetup 是深入了解 Elasticsearch 内部工作机制、提升使用技能的绝佳机会。不要错过!

Meetup 讲师招募

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

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

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

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

往期回顾

【第 1 期】2024 搜索客 Meetup | Easysearch 结合大模型实现 RAG

关于 搜索客(SearchKit)社区

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

收起阅读 »

【搜索客社区日报】第1874期(2024-08-05)

1、重新认识 Elasticsearch- 一体化矢量搜索引擎
https://xie.infoq.cn/article/a ... e29b0

2、大模型与数据库:AI 时代的双向助推力
https://blog.csdn.net/OpenPie/ ... 98383

3、李飞飞团队发布《2024年人工智能指数报告》:10大趋势,揭示AI大模型喜与忧
https://www.thepaper.cn/newsDe ... 45165

4、大杀器!多Agent系统进入自动化编程领域,程序员会失业吗
https://blog.csdn.net/kiiy2/ar ... 7.235^v43^control&spm=1001.2101.3001.4242.1&utm_relevant_index=1

5、将成千上万的 Agent 连接起来,互相协作!智能体互联网 IoA 诞生了
https://blog.csdn.net/dQCFKyQD ... .5928

编辑:Muse 
更多资讯:http://news.searchkit.cn
继续阅读 »
1、重新认识 Elasticsearch- 一体化矢量搜索引擎
https://xie.infoq.cn/article/a ... e29b0

2、大模型与数据库:AI 时代的双向助推力
https://blog.csdn.net/OpenPie/ ... 98383

3、李飞飞团队发布《2024年人工智能指数报告》:10大趋势,揭示AI大模型喜与忧
https://www.thepaper.cn/newsDe ... 45165

4、大杀器!多Agent系统进入自动化编程领域,程序员会失业吗
https://blog.csdn.net/kiiy2/ar ... 7.235^v43^control&spm=1001.2101.3001.4242.1&utm_relevant_index=1

5、将成千上万的 Agent 连接起来,互相协作!智能体互联网 IoA 诞生了
https://blog.csdn.net/dQCFKyQD ... .5928

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

活动回顾 | 2024 搜索客社区 Meetup 首期线上直播活动圆满结束,附 PPT 下载

2024 年 7 月 31 日,由搜索客社区和极限科技(INFINI Labs)联合举办的首期线上 Meetup 技术交流直播活动圆满结束。本次直播活动吸引了超过 300 人次的技术爱好者参与,共同探讨了 Easysearch、大模型、RAG 等前沿技术和实践应用,为广大搜索技术爱好者提供了一个宝贵的学习和交流平台。

20240731-164852_副本.png

主题:Easysearch 结合大模型实现 RAG

本次Meetup活动我们邀请到了极限科技高级解决方案架构师、《老杨玩搜索》栏目 B站UP主 杨帆老师,为大家带来了主题为《Easysearch 结合大模型实现 RAG》精彩分享。

5.png

杨帆老师首先对 LangChain 进行了全面的介绍,包括其作用、组件构成和优势。接着,深入剖析了 RAG 技术的背景和局限性,探讨了 RAG 在信息获取方面的创新和挑战。在 LangChain 框架下,杨帆老师详细阐述了实现 RAG 的具体工作流程。最后通过 Demo 演示,展示了如何使用 Easysearch 结合大模型 ollama,实现企业内部 QA 知识问答系统。这一环节不仅展示了技术的实用性,也极大地激发了参会者的学习兴趣。

1.jpg

2.jpg

3.jpg

4.jpg

PPT 部分内容截图

讲师分享过程中,直播间气氛非常活跃。参会者积极在直播间评论区留言,与讲师进行了深入的问答互动。同时,在互动环节中,主持人进行了激动人心的抽奖活动,将活动气氛推向了高潮,为参会小伙伴带来了额外的惊喜。

随着活动的圆满结束,参与者们不仅收获了丰富的技术知识和实际操作经验,还通过在线交流加深了对 Easysearch 和 RAG 的了解。这次 Meetup 为大家提供了一个分享和学习的平台,共同推动了技术的进步和社区的发展。

最后感谢大家的参与和支持,让我们共同期待下一次的 搜索客社区 Meetup 活动带来更多的精彩内容!

本期 Meetup 的 PPT 下载

本次 PPT 下载的链接:https://elasticsearch.cn/slides/324

本期 Meetup 视频回放

扫码关注极限实验室视频号查看直播回放,或者扫码关注极限实验室 B站账号,可查看本期Meetup活动视频。我们也会在视频号、B站持续更新最新技术视频,欢迎通过点赞、投币,收藏,三连来支持我们。

视频号-B站-二维码banner.png

下期 Meetup 主题预告

视频号直播预约.jpg

Meetup 活动讲师招募

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

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

搜索客Meetup讲师报名二维码.png

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

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

继续阅读 »

2024 年 7 月 31 日,由搜索客社区和极限科技(INFINI Labs)联合举办的首期线上 Meetup 技术交流直播活动圆满结束。本次直播活动吸引了超过 300 人次的技术爱好者参与,共同探讨了 Easysearch、大模型、RAG 等前沿技术和实践应用,为广大搜索技术爱好者提供了一个宝贵的学习和交流平台。

20240731-164852_副本.png

主题:Easysearch 结合大模型实现 RAG

本次Meetup活动我们邀请到了极限科技高级解决方案架构师、《老杨玩搜索》栏目 B站UP主 杨帆老师,为大家带来了主题为《Easysearch 结合大模型实现 RAG》精彩分享。

5.png

杨帆老师首先对 LangChain 进行了全面的介绍,包括其作用、组件构成和优势。接着,深入剖析了 RAG 技术的背景和局限性,探讨了 RAG 在信息获取方面的创新和挑战。在 LangChain 框架下,杨帆老师详细阐述了实现 RAG 的具体工作流程。最后通过 Demo 演示,展示了如何使用 Easysearch 结合大模型 ollama,实现企业内部 QA 知识问答系统。这一环节不仅展示了技术的实用性,也极大地激发了参会者的学习兴趣。

1.jpg

2.jpg

3.jpg

4.jpg

PPT 部分内容截图

讲师分享过程中,直播间气氛非常活跃。参会者积极在直播间评论区留言,与讲师进行了深入的问答互动。同时,在互动环节中,主持人进行了激动人心的抽奖活动,将活动气氛推向了高潮,为参会小伙伴带来了额外的惊喜。

随着活动的圆满结束,参与者们不仅收获了丰富的技术知识和实际操作经验,还通过在线交流加深了对 Easysearch 和 RAG 的了解。这次 Meetup 为大家提供了一个分享和学习的平台,共同推动了技术的进步和社区的发展。

最后感谢大家的参与和支持,让我们共同期待下一次的 搜索客社区 Meetup 活动带来更多的精彩内容!

本期 Meetup 的 PPT 下载

本次 PPT 下载的链接:https://elasticsearch.cn/slides/324

本期 Meetup 视频回放

扫码关注极限实验室视频号查看直播回放,或者扫码关注极限实验室 B站账号,可查看本期Meetup活动视频。我们也会在视频号、B站持续更新最新技术视频,欢迎通过点赞、投币,收藏,三连来支持我们。

视频号-B站-二维码banner.png

下期 Meetup 主题预告

视频号直播预约.jpg

Meetup 活动讲师招募

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

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

搜索客Meetup讲师报名二维码.png

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

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

收起阅读 »

【搜索客社区日报】第1873期 (2024-08-02)

1、GraphRAG 深入解析
https://mp.weixin.qq.com/s/fhJfL9LX2SkcVqcuJ3RcYg

2、「最佳实践」借助网关双写,实现 Elasticsearch 的无缝在线迁移
https://cloud.tencent.com/deve ... 90434

3、Easysearch、Elasticsearch、Amazon OpenSearch 快照兼容对比
https://blog.csdn.net/weixin_3 ... 47448

4、DB 大咖对话 | 数据要素与人工智能对我国数据库技术和产业的影响
https://www.infoq.cn/article/OVogOUR5HtKoou9x8ugC

5、万字长文年中盘点,2024 上半年大模型技术突破与应用展望
https://xie.infoq.cn/article/d ... 9c6e2

编辑:Fred 
更多资讯:http://news.searchkit.cn
继续阅读 »
1、GraphRAG 深入解析
https://mp.weixin.qq.com/s/fhJfL9LX2SkcVqcuJ3RcYg

2、「最佳实践」借助网关双写,实现 Elasticsearch 的无缝在线迁移
https://cloud.tencent.com/deve ... 90434

3、Easysearch、Elasticsearch、Amazon OpenSearch 快照兼容对比
https://blog.csdn.net/weixin_3 ... 47448

4、DB 大咖对话 | 数据要素与人工智能对我国数据库技术和产业的影响
https://www.infoq.cn/article/OVogOUR5HtKoou9x8ugC

5、万字长文年中盘点,2024 上半年大模型技术突破与应用展望
https://xie.infoq.cn/article/d ... 9c6e2

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

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

1.GraphRAG:解锁LLM对叙述性私有数据的发现
https://www.microsoft.com/en-u ... data/
2.Perplexity 牛逼!50 人团队年入 1.5 亿,这家 AI 独角兽如何在2年内撼动谷歌地位?
https://mp.weixin.qq.com/s/R-JczQeEsDJzV4YnpFCAPA
3.使用 OpenTelemetry 实现基于 LLM 的应用的可观测性介绍
https://mp.weixin.qq.com/s/Y0T4KUyJ3Fl0q5Zbz-bzOA

编辑:Se7en  
更多资讯:http://news.searchkit.cn
继续阅读 »
1.GraphRAG:解锁LLM对叙述性私有数据的发现
https://www.microsoft.com/en-u ... data/
2.Perplexity 牛逼!50 人团队年入 1.5 亿,这家 AI 独角兽如何在2年内撼动谷歌地位?
https://mp.weixin.qq.com/s/R-JczQeEsDJzV4YnpFCAPA
3.使用 OpenTelemetry 实现基于 LLM 的应用的可观测性介绍
https://mp.weixin.qq.com/s/Y0T4KUyJ3Fl0q5Zbz-bzOA

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

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

1.Chunk的大小如何影响语义检索结果(搭梯)
https://ai.plainenglish.io/inv ... d8ca1
2.2800 份 AI 文档的检索增强生成 — 现场演示(搭梯)
https://medium.com/%40lamslide ... ff732
3.IK分词器原理
https://juejin.cn/post/6845166891120476168


编辑:kin122 
更多资讯:http://news.searchkit.cn
继续阅读 »
1.Chunk的大小如何影响语义检索结果(搭梯)
https://ai.plainenglish.io/inv ... d8ca1
2.2800 份 AI 文档的检索增强生成 — 现场演示(搭梯)
https://medium.com/%40lamslide ... ff732
3.IK分词器原理
https://juejin.cn/post/6845166891120476168


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

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

1. RAG 赋能 ES?
https://medium.com/%40zagfox/e ... 721a5
2. ES 里的相似性计算知多少
https://medium.com/%40shekhar. ... bf59c
3. Agent让大模型从“解释问题”到“解决问题”
https://zhuanlan.zhihu.com/p/7 ... r%3D0
编辑:斯蒂文
更多资讯:http://news.searchkit.cn
 
继续阅读 »
1. RAG 赋能 ES?
https://medium.com/%40zagfox/e ... 721a5
2. ES 里的相似性计算知多少
https://medium.com/%40shekhar. ... bf59c
3. Agent让大模型从“解释问题”到“解决问题”
https://zhuanlan.zhihu.com/p/7 ... r%3D0
编辑:斯蒂文
更多资讯:http://news.searchkit.cn
  收起阅读 »

Easysearch、Elasticsearch、Amazon OpenSearch 快照兼容对比

在当今的数据驱动时代,搜索引擎的快照功能在数据保护和灾难恢复中至关重要。本文将对 Easysearch、Elasticsearch 和 Amazon OpenSearch 的快照兼容性进行比较,分析它们在快照创建、恢复、存储格式和跨平台兼容性等方面的特点,帮助大家更好地理解这些搜索引擎的差异,从而选择最适合自己需求的解决方案。

启动集群

Easysearch

服务器一般情况下默认参数都是很低的,而 Easysearch/Elasticsearch 是内存大户,所以就需要进行系统调优。

sysctl -w vm.max_map_count=262144

vm.max_map_count 是一个 Linux 内核参数,用于控制单个进程可以拥有的最大内存映射区域(VMA,Virtual Memory Areas)的数量。内存映射区域是指通过内存映射文件或匿名内存映射创建的虚拟内存区域。

这个参数在一些应用程序中非常重要,尤其是那些需要大量内存映射的应用程序,比如 Elasticsearch。Elasticsearch 使用内存映射文件来索引和搜索数据,这可能需要大量的内存映射区域。如果 vm.max_map_count 设置得太低,Elasticsearch 可能无法正常工作,并会出现错误信息。

调整 vm.max_map_count 参数的一些常见原因:

  1. 支持大型数据集: 应用程序(如 Elasticsearch)在处理大型数据集时可能需要大量内存映射区域。增加 vm.max_map_count 可以确保这些应用程序有足够的内存映射区域来处理数据。

  2. 防止内存错误: 如果 vm.max_map_count 设置得太低,当应用程序尝试创建超过限制的内存映射时,会出现错误,导致应用程序崩溃或无法正常工作。

  3. 优化性能: 适当地设置 vm.max_map_count 可以优化应用程序的性能,确保内存映射操作顺利进行。

检查当前的 vm.max_map_count 值:

sysctl vm.max_map_count

或者查看 /proc/sys/vm/max_map_count 文件:

cat /proc/sys/vm/max_map_count

Elasticsearch 官方建议将 vm.max_map_count 设置为至少 262144。对于其他应用程序。

Easysearch 具体安装步骤见 INFINI Easysearch 尝鲜 Hands on

Amazon OpenSearch

使用 Amazon Web Services 控制台进行创建。

Elasticsearch

使用如下 docker compose 部署一个三节点的 ES 集群:

version: "2.2"
services:
  es01:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.10.2
    container_name: es01
    environment:
      - node.name=es01
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es02,es03
      - cluster.initial_master_nodes=es01,es02,es03
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - data01:/usr/share/elasticsearch/data
    ports:
      - 9200:9200
    networks:
      - elastic
  es02:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.10.2
    container_name: es02
    environment:
      - node.name=es02
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es01,es03
      - cluster.initial_master_nodes=es01,es02,es03
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - data02:/usr/share/elasticsearch/data
    networks:
      - elastic
  es03:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.10.2
    container_name: es03
    environment:
      - node.name=es03
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es01,es02
      - cluster.initial_master_nodes=es01,es02,es03
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - data03:/usr/share/elasticsearch/data
    networks:
      - elastic

volumes:
  data01:
    driver: local
  data02:
    driver: local
  data03:
    driver: local

networks:
  elastic:
    driver: bridge

由于这个 docker compose 没有关于 kibana 的配置,所以我们还是用 Console 添加原生的 Elasticsearch 集群!

集群信息

快照还原的步骤

快照前的准备

插件安装

本次测试选择把索引快照备份到 Amazon S3,所以需要使用 S3 repository plugin,这个插件添加了对使用 Amazon S3 作为快照/恢复存储库的支持。

Easysearch 和 OpenSearch 集群自带了这个插件,所以无需额外安装。

对于自己部署的三节点 Elasticsearch 则需要进入每一个节点运行安装命令然后再重启集群,建议使用自动化运维工具来做这步,安装命令如下:

sudo bin/elasticsearch-plugin install repository-s3

如果不再需要这个插件,可以这样删除。

sudo bin/elasticsearch-plugin remove repository-s3

由于需要和 Amazon Web Services 打交道,所以我们需要设置 IAM 凭证,这个插件可以从 EC2 IAM instance profile,ECS task role 以及 EKS 的 Service account 读取相应的凭证。

对于托管的 Amazon OpenSearch 来说,我们无法在托管的 EC2 上绑定我们的凭证,所以需要新建一个 OpenSearchSnapshotRole,然后通过当前的用户把这个角色传递给服务,也就是我们说的 IAM:PassRole。

创建 OpenSearchSnapshotRole,策略如下:

{
  "Version": "2012-10-17",
  "Statement": [{
      "Action": [
        "s3:ListBucket"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::bucket-name"
      ]
    },
    {
      "Action": [
        "s3:GetObject",
        "s3:PutObject",
        "s3:DeleteObject"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::bucket-name/*"
      ]
    }
  ]
}

信任关系如下:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "es.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

然后在我们的 IAM user 上加上 PassRole 的权限,这样我们就可以把 OpenSearchSnapshotRole 传递给 OpenSearch 集群。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "iam:PassRole",
      "Resource": "arn:aws:iam::123456789012:role/OpenSearchSnapshotRole"
    }
  ]
}

注册存储库

在源集群执行注册

PUT /_snapshot/snapshot-repo-name
{
  "type": "s3",
  "settings": {
    "bucket": "<bucket-name>",
    "base_path": "<bucket-prefix>",

在目标集群同样执行这个语句,为了防止覆盖源集群存储库的数据,将 "readonly": true 添加到"settings" PUT 请求中,这样就只有一个集群具有对存储库的写入权限。

PUT /_snapshot/snapshot-repo-name
{
  "type": "s3",
  "settings": {
    "bucket": "<bucket-name>",
    "base_path": "<bucket-prefix>",
    "readonly": true,

对于 OpenSearch 来说,还需要执行 passrole,所以还需要添加role_arn这个字段,由于 IAM:PassRole 需要对 HTTP 请求做 signV4 日签名,所以这部常常使用 Postman 来完成。把角色传递过去之后,接下来的快照还原操作就可以在 OpenSearch Dashboard 中进行操作了。

需要注意的是,需要在 auth 这里输入 AccessKey,SecretKey,AWS Region,Service Name(es)来做 SignV4 的签名。

请求体如下:

{
  "type": "s3",
  "settings": {
    "bucket": "<bucket-name>",
    "base_path": "<bucket-prefix>",
    "readonly": true,
    "role_arn": "arn:aws:iam::123456789012:role/OpenSearchSnapshotRole"
  }
}
  • 查看所有注册的存储库
    • GET _snapshot:这个命令返回所有已注册的快照存储库列表及其基本信息。
GET _snapshot
{
  "es_repository": {
    "type": "s3",
    "settings": {
      "bucket": "your-s3-bucket-name",
      "region": "your-s3-bucket-region"
    }
  }
}
  • 查看特定存储库的详细信息GET _snapshot/es_repository:这个命令返回名为es_repository的存储库的详细配置信息,包括存储桶名称、区域和其他设置。
GET _snapshot/es_repository
{
  "es_repository": {
    "type": "s3",
    "settings": {
      "bucket": "your-s3-bucket-name",
      "region": "your-s3-bucket-region",
      "access_key": "your-access-key",
      "secret_key": "your-secret-key"
    }
  }
}
  • 查看特定存储库中的快照GET _cat/snapshots/es_repository?v:这个命令返回es_repository存储库中的所有快照及其详细信息,包括快照 ID、状态、开始时间、结束时间、持续时间、包含的索引数量、成功和失败的分片数量等。
GET _cat/snapshots/es_repository?v
id                     status start_epoch start_time end_epoch end_time duration indices successful_shards failed_shards total_shards
snapshot_1             SUCCESS 1628884800 08:00:00   1628888400 09:00:00 1h       3       10                0             10
snapshot_2             SUCCESS 1628971200 08:00:00   1628974800 09:00:00 1h       3       10                0             10

创建索引快照

# PUT _snapshot/my_repository/<my_snapshot_{now/d}>
PUT _snapshot/my_repository/my_snapshot
{
  "indices": "my-index,logs-my_app-default",
}

根据快照的大小不同,完成快照可能需要一些时间。默认情况下,create snapshot API 只会异步启动快照过程,该过程在后台运行。要更改为同步调用,可以将 wait_for_completion 查询参数设置为 true

PUT _snapshot/my_repository/my_snapshot?wait_for_completion=true

另外还可以使用 clone snapshot API 克隆现有的快照。要监控当前正在运行的快照,可以使用带有 _current 请求路径参数的 get snapshot API。

GET _snapshot/my_repository/_current

如果要获取参与当前运行快照的每个分片的完整详细信息,可以使用 get snapshot status API。

GET _snapshot/_status

成功创建快照之后,就可以在 S3 上看到备份的数据块文件,这个是正确的快照层级结构:

需要注意的是, "base_path": ""这里最好不要加/,虽然不影响同集群迁移,这个会为我们在不同厂商的搜索引擎中迁移遇到问题,可能是这样的,所以需要注意。

所以在 Open Search 中还原 Elasticsearch 就遇到了这个问题:

{
  "error": {
    "root_cause": [
      {
        "type": "snapshot_missing_exception",
        "reason": "[easy_repository:2/-jOQ0oucQDGF3hJMNz-vKQ] is missing"
      }
    ],
    "type": "snapshot_missing_exception",
    "reason": "[easy_repository:2/-jOQ0oucQDGF3hJMNz-vKQ] is missing",
    "caused_by": {
      "type": "no_such_file_exception",
      "reason": "Blob object [11111/indices/7fv2zAi4Rt203JfsczUrBg/meta-YGnzxZABRBxW-2vqcmci.dat] not found: The specified key does not exist. (Service: S3, Status Code: 404, Request ID: R71DDHX4XXM0434T, Extended Request ID: d9M/HWvPvMFdPhB6KX+wYCW3ZFqeFo9EoscWPkulOXWa+TnovAE5PlemtuVzKXjlC+rrgskXAus=)"
    }
  },
  "status": 404
}

恢复索引快照

POST _snapshot/my_repository/my_snapshot_2099.05.06/_restore
{
  "indices": "my-index,logs-my_app-default",
}

各个集群的还原

  1. Elasticsearch 7.10.2 的快照可以还原到 Easysearch 和 Amazon OpenSearch

  2. 从 Easysearch 1.8.2 还原到 Elasticsearch 7.10.2 报错如下:
{
  "error": {
    "root_cause": [
      {
        "type": "snapshot_restore_exception",
        "reason": "[s3_repository:1/a2qV4NYIReqvgW6BX_nxxw] cannot restore index [my_indexs] because it cannot be upgraded"
      }
    ],
    "type": "snapshot_restore_exception",
    "reason": "[s3_repository:1/a2qV4NYIReqvgW6BX_nxxw] cannot restore index [my_indexs] because it cannot be upgraded",
    "caused_by": {
      "type": "illegal_state_exception",
      "reason": "The index [[my_indexs/ALlTCIr0RJqtP06ouQmf0g]] was created with version [1.8.2] but the minimum compatible version is [6.0.0-beta1]. It should be re-indexed in Elasticsearch 6.x before upgrading to 7.10.2."
    }
  },
  "status": 500
}
  1. 从 Amazon OpenSearch 2.1.3 还原到 Elasticsearch 7.10.2 报错如下(无论是否开启兼容模式):
{
  "error": {
    "root_cause": [
      {
        "type": "snapshot_restore_exception",
        "reason": "[aos:2/D-oyYSscSdCbZFcmPZa_yg] the snapshot was created with Elasticsearch version [36.34.78-beta2] which is higher than the version of this node [7.10.2]"
      }
    ],
    "type": "snapshot_restore_exception",
    "reason": "[aos:2/D-oyYSscSdCbZFcmPZa_yg] the snapshot was created with Elasticsearch version [36.34.78-beta2] which is higher than the version of this node [7.10.2]"
  },
  "status": 500
}
  1. 从 Easysearch 1.8.2 还原到 Amazon OpenSearch2.13 报错如下(无论是否开启兼容模式):
{
  "error": {
    "root_cause": [
      {
        "type": "snapshot_restore_exception",
        "reason": "[easy_repository:2/LE18AWHlRJu9rpz9BJatUQ] cannot restore index [my_indexs] because it cannot be upgraded"
      }
    ],
    "type": "snapshot_restore_exception",
    "reason": "[easy_repository:2/LE18AWHlRJu9rpz9BJatUQ] cannot restore index [my_indexs] because it cannot be upgraded",
    "caused_by": {
      "type": "illegal_state_exception",
      "reason": "The index [[my_indexs/VHOo7yfDTRa48uhQvquFzQ]] was created with version [1.8.2] but the minimum compatible version is OpenSearch 1.0.0 (or Elasticsearch 7.0.0). It should be re-indexed in OpenSearch 1.x (or Elasticsearch 7.x) before upgrading to 2.13.0."
    }
  },
  "status": 500
}
  1. Amazon OpenSearch 还原到 Easysearch 同样失败
{
  "error": {
    "root_cause": [
      {
        "type": "snapshot_restore_exception",
        "reason": "[aoss:2/D-oyYSscSdCbZFcmPZa_yg] cannot restore index [aos] because it cannot be upgraded"
      }
    ],
    "type": "snapshot_restore_exception",
    "reason": "[aoss:2/D-oyYSscSdCbZFcmPZa_yg] cannot restore index [aos] because it cannot be upgraded",
    "caused_by": {
      "type": "illegal_state_exception",
      "reason": "The index [[aos/864WjTAXQCaxJ829V5ktaw]] was created with version [36.34.78-beta2] but the minimum compatible version is [6.0.0]. It should be re-indexed in Easysearch 6.x before upgrading to 1.8.2."
    }
  },
  "status": 500
}
  1. Elasticsearch 8.14.3 迁移到 Amazon OpenSearch 或者 Elasticsearch 都是有这个报错:
{
  "error": {
    "root_cause": [
      {
        "type": "parsing_exception",
        "reason": "Failed to parse object: unknown field [uuid] found",
        "line": 1,
        "col": 25
      }
    ],
    "type": "repository_exception",
    "reason": "[snap] Unexpected exception when loading repository data",
    "caused_by": {
      "type": "parsing_exception",
      "reason": "Failed to parse object: unknown field [uuid] found",
      "line": 1,
      "col": 25
    }
  },
  "status": 500
}

这是由于 Elasticsearch 8 在创建快照的时候会默认加上一个 UUID 的字段,所以我们低版本的 Easysearch、Amazon OpenSearch 中会找不到这个字段,在执行GET _cat/snapshots/snap?v的时候就报错,及时在注册存储库的时候显示加上 UUID 的字段也无事无补。

{
  "snapshot-repo-name": {
    "type": "s3",
    "uuid": "qlJ0uqErRmW6aww2Fyt4Fg",
    "settings": {
    "bucket": "<bucket-name>",
    "base_path": "<bucket-prefix>",
    }
  },

以下是兼容性对比,每行第一列代表源集群,第一行代表目标集群:

快照兼容对比 Easysearch 1.8.2 Elasticsearch 7.10.2 OpenSearch 2.13
Easysearch 1.8.2 兼容 不兼容 不兼容
Elasticsearch 7.10.2 兼容 兼容 兼容
OpenSearch 2.13 不兼容 不兼容 兼容

Elasticsearch 的兼容列表官方的列表如下:

参考文献

  1. 开始使用 Elastic Stack 和 Docker Compose:第 1 部分
    https://www.elastic.co/cn/blog/getting-started-with-the-elastic-stack-and-docker-compose

  2. Docker Compose 部署多节点 Elasticsearch
    https://www.elastic.co/guide/en/elasticsearch/reference/7.10/docker.html#docker-compose-file

  3. repository-s3 教程
    https://www.elastic.co/guide/en/elasticsearch/reference/8.14/repository-s3.html
    https://www.elastic.co/guide/en/elasticsearch/plugins/7.10/repository-s3.html

  4. snapshot-restore
    https://www.elastic.co/guide/en/elasticsearch/reference/7.10/snapshot-restore.html

  5. 在亚马逊 OpenSearch 服务中创建索引快照
    https://docs.amazonaws.cn/zh_cn/opensearch-service/latest/developerguide/managedomains-snapshots.html#managedomains-snapshot-restore

  6. 教程:迁移至 Amazon OpenSearch Service
    https://docs.amazonaws.cn/zh_cn/opensearch-service/latest/developerguide/migration.html

关于 Easysearch 有奖征文活动

黑神话悟空

无论你是 Easysearch 的老用户,还是第一次听说这个名字,只要你对 INFINI Labs 旗下的 Easysearch 产品感兴趣,或者是希望了解 Easysearch,都可以参加这次活动。

详情查看:Easysearch 征文活动

作者:韩旭,亚马逊云技术支持,亚马逊云科技技领云博主,目前专注于云计算开发和大数据领域。

原文:https://infinilabs.cn/blog/2024/comparison-of-snapshot-compatibility-between-easysearch-elasticsearch-and-opensearch/

继续阅读 »

在当今的数据驱动时代,搜索引擎的快照功能在数据保护和灾难恢复中至关重要。本文将对 Easysearch、Elasticsearch 和 Amazon OpenSearch 的快照兼容性进行比较,分析它们在快照创建、恢复、存储格式和跨平台兼容性等方面的特点,帮助大家更好地理解这些搜索引擎的差异,从而选择最适合自己需求的解决方案。

启动集群

Easysearch

服务器一般情况下默认参数都是很低的,而 Easysearch/Elasticsearch 是内存大户,所以就需要进行系统调优。

sysctl -w vm.max_map_count=262144

vm.max_map_count 是一个 Linux 内核参数,用于控制单个进程可以拥有的最大内存映射区域(VMA,Virtual Memory Areas)的数量。内存映射区域是指通过内存映射文件或匿名内存映射创建的虚拟内存区域。

这个参数在一些应用程序中非常重要,尤其是那些需要大量内存映射的应用程序,比如 Elasticsearch。Elasticsearch 使用内存映射文件来索引和搜索数据,这可能需要大量的内存映射区域。如果 vm.max_map_count 设置得太低,Elasticsearch 可能无法正常工作,并会出现错误信息。

调整 vm.max_map_count 参数的一些常见原因:

  1. 支持大型数据集: 应用程序(如 Elasticsearch)在处理大型数据集时可能需要大量内存映射区域。增加 vm.max_map_count 可以确保这些应用程序有足够的内存映射区域来处理数据。

  2. 防止内存错误: 如果 vm.max_map_count 设置得太低,当应用程序尝试创建超过限制的内存映射时,会出现错误,导致应用程序崩溃或无法正常工作。

  3. 优化性能: 适当地设置 vm.max_map_count 可以优化应用程序的性能,确保内存映射操作顺利进行。

检查当前的 vm.max_map_count 值:

sysctl vm.max_map_count

或者查看 /proc/sys/vm/max_map_count 文件:

cat /proc/sys/vm/max_map_count

Elasticsearch 官方建议将 vm.max_map_count 设置为至少 262144。对于其他应用程序。

Easysearch 具体安装步骤见 INFINI Easysearch 尝鲜 Hands on

Amazon OpenSearch

使用 Amazon Web Services 控制台进行创建。

Elasticsearch

使用如下 docker compose 部署一个三节点的 ES 集群:

version: "2.2"
services:
  es01:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.10.2
    container_name: es01
    environment:
      - node.name=es01
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es02,es03
      - cluster.initial_master_nodes=es01,es02,es03
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - data01:/usr/share/elasticsearch/data
    ports:
      - 9200:9200
    networks:
      - elastic
  es02:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.10.2
    container_name: es02
    environment:
      - node.name=es02
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es01,es03
      - cluster.initial_master_nodes=es01,es02,es03
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - data02:/usr/share/elasticsearch/data
    networks:
      - elastic
  es03:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.10.2
    container_name: es03
    environment:
      - node.name=es03
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es01,es02
      - cluster.initial_master_nodes=es01,es02,es03
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - data03:/usr/share/elasticsearch/data
    networks:
      - elastic

volumes:
  data01:
    driver: local
  data02:
    driver: local
  data03:
    driver: local

networks:
  elastic:
    driver: bridge

由于这个 docker compose 没有关于 kibana 的配置,所以我们还是用 Console 添加原生的 Elasticsearch 集群!

集群信息

快照还原的步骤

快照前的准备

插件安装

本次测试选择把索引快照备份到 Amazon S3,所以需要使用 S3 repository plugin,这个插件添加了对使用 Amazon S3 作为快照/恢复存储库的支持。

Easysearch 和 OpenSearch 集群自带了这个插件,所以无需额外安装。

对于自己部署的三节点 Elasticsearch 则需要进入每一个节点运行安装命令然后再重启集群,建议使用自动化运维工具来做这步,安装命令如下:

sudo bin/elasticsearch-plugin install repository-s3

如果不再需要这个插件,可以这样删除。

sudo bin/elasticsearch-plugin remove repository-s3

由于需要和 Amazon Web Services 打交道,所以我们需要设置 IAM 凭证,这个插件可以从 EC2 IAM instance profile,ECS task role 以及 EKS 的 Service account 读取相应的凭证。

对于托管的 Amazon OpenSearch 来说,我们无法在托管的 EC2 上绑定我们的凭证,所以需要新建一个 OpenSearchSnapshotRole,然后通过当前的用户把这个角色传递给服务,也就是我们说的 IAM:PassRole。

创建 OpenSearchSnapshotRole,策略如下:

{
  "Version": "2012-10-17",
  "Statement": [{
      "Action": [
        "s3:ListBucket"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::bucket-name"
      ]
    },
    {
      "Action": [
        "s3:GetObject",
        "s3:PutObject",
        "s3:DeleteObject"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::bucket-name/*"
      ]
    }
  ]
}

信任关系如下:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "es.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

然后在我们的 IAM user 上加上 PassRole 的权限,这样我们就可以把 OpenSearchSnapshotRole 传递给 OpenSearch 集群。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "iam:PassRole",
      "Resource": "arn:aws:iam::123456789012:role/OpenSearchSnapshotRole"
    }
  ]
}

注册存储库

在源集群执行注册

PUT /_snapshot/snapshot-repo-name
{
  "type": "s3",
  "settings": {
    "bucket": "<bucket-name>",
    "base_path": "<bucket-prefix>",

在目标集群同样执行这个语句,为了防止覆盖源集群存储库的数据,将 "readonly": true 添加到"settings" PUT 请求中,这样就只有一个集群具有对存储库的写入权限。

PUT /_snapshot/snapshot-repo-name
{
  "type": "s3",
  "settings": {
    "bucket": "<bucket-name>",
    "base_path": "<bucket-prefix>",
    "readonly": true,

对于 OpenSearch 来说,还需要执行 passrole,所以还需要添加role_arn这个字段,由于 IAM:PassRole 需要对 HTTP 请求做 signV4 日签名,所以这部常常使用 Postman 来完成。把角色传递过去之后,接下来的快照还原操作就可以在 OpenSearch Dashboard 中进行操作了。

需要注意的是,需要在 auth 这里输入 AccessKey,SecretKey,AWS Region,Service Name(es)来做 SignV4 的签名。

请求体如下:

{
  "type": "s3",
  "settings": {
    "bucket": "<bucket-name>",
    "base_path": "<bucket-prefix>",
    "readonly": true,
    "role_arn": "arn:aws:iam::123456789012:role/OpenSearchSnapshotRole"
  }
}
  • 查看所有注册的存储库
    • GET _snapshot:这个命令返回所有已注册的快照存储库列表及其基本信息。
GET _snapshot
{
  "es_repository": {
    "type": "s3",
    "settings": {
      "bucket": "your-s3-bucket-name",
      "region": "your-s3-bucket-region"
    }
  }
}
  • 查看特定存储库的详细信息GET _snapshot/es_repository:这个命令返回名为es_repository的存储库的详细配置信息,包括存储桶名称、区域和其他设置。
GET _snapshot/es_repository
{
  "es_repository": {
    "type": "s3",
    "settings": {
      "bucket": "your-s3-bucket-name",
      "region": "your-s3-bucket-region",
      "access_key": "your-access-key",
      "secret_key": "your-secret-key"
    }
  }
}
  • 查看特定存储库中的快照GET _cat/snapshots/es_repository?v:这个命令返回es_repository存储库中的所有快照及其详细信息,包括快照 ID、状态、开始时间、结束时间、持续时间、包含的索引数量、成功和失败的分片数量等。
GET _cat/snapshots/es_repository?v
id                     status start_epoch start_time end_epoch end_time duration indices successful_shards failed_shards total_shards
snapshot_1             SUCCESS 1628884800 08:00:00   1628888400 09:00:00 1h       3       10                0             10
snapshot_2             SUCCESS 1628971200 08:00:00   1628974800 09:00:00 1h       3       10                0             10

创建索引快照

# PUT _snapshot/my_repository/<my_snapshot_{now/d}>
PUT _snapshot/my_repository/my_snapshot
{
  "indices": "my-index,logs-my_app-default",
}

根据快照的大小不同,完成快照可能需要一些时间。默认情况下,create snapshot API 只会异步启动快照过程,该过程在后台运行。要更改为同步调用,可以将 wait_for_completion 查询参数设置为 true

PUT _snapshot/my_repository/my_snapshot?wait_for_completion=true

另外还可以使用 clone snapshot API 克隆现有的快照。要监控当前正在运行的快照,可以使用带有 _current 请求路径参数的 get snapshot API。

GET _snapshot/my_repository/_current

如果要获取参与当前运行快照的每个分片的完整详细信息,可以使用 get snapshot status API。

GET _snapshot/_status

成功创建快照之后,就可以在 S3 上看到备份的数据块文件,这个是正确的快照层级结构:

需要注意的是, "base_path": ""这里最好不要加/,虽然不影响同集群迁移,这个会为我们在不同厂商的搜索引擎中迁移遇到问题,可能是这样的,所以需要注意。

所以在 Open Search 中还原 Elasticsearch 就遇到了这个问题:

{
  "error": {
    "root_cause": [
      {
        "type": "snapshot_missing_exception",
        "reason": "[easy_repository:2/-jOQ0oucQDGF3hJMNz-vKQ] is missing"
      }
    ],
    "type": "snapshot_missing_exception",
    "reason": "[easy_repository:2/-jOQ0oucQDGF3hJMNz-vKQ] is missing",
    "caused_by": {
      "type": "no_such_file_exception",
      "reason": "Blob object [11111/indices/7fv2zAi4Rt203JfsczUrBg/meta-YGnzxZABRBxW-2vqcmci.dat] not found: The specified key does not exist. (Service: S3, Status Code: 404, Request ID: R71DDHX4XXM0434T, Extended Request ID: d9M/HWvPvMFdPhB6KX+wYCW3ZFqeFo9EoscWPkulOXWa+TnovAE5PlemtuVzKXjlC+rrgskXAus=)"
    }
  },
  "status": 404
}

恢复索引快照

POST _snapshot/my_repository/my_snapshot_2099.05.06/_restore
{
  "indices": "my-index,logs-my_app-default",
}

各个集群的还原

  1. Elasticsearch 7.10.2 的快照可以还原到 Easysearch 和 Amazon OpenSearch

  2. 从 Easysearch 1.8.2 还原到 Elasticsearch 7.10.2 报错如下:
{
  "error": {
    "root_cause": [
      {
        "type": "snapshot_restore_exception",
        "reason": "[s3_repository:1/a2qV4NYIReqvgW6BX_nxxw] cannot restore index [my_indexs] because it cannot be upgraded"
      }
    ],
    "type": "snapshot_restore_exception",
    "reason": "[s3_repository:1/a2qV4NYIReqvgW6BX_nxxw] cannot restore index [my_indexs] because it cannot be upgraded",
    "caused_by": {
      "type": "illegal_state_exception",
      "reason": "The index [[my_indexs/ALlTCIr0RJqtP06ouQmf0g]] was created with version [1.8.2] but the minimum compatible version is [6.0.0-beta1]. It should be re-indexed in Elasticsearch 6.x before upgrading to 7.10.2."
    }
  },
  "status": 500
}
  1. 从 Amazon OpenSearch 2.1.3 还原到 Elasticsearch 7.10.2 报错如下(无论是否开启兼容模式):
{
  "error": {
    "root_cause": [
      {
        "type": "snapshot_restore_exception",
        "reason": "[aos:2/D-oyYSscSdCbZFcmPZa_yg] the snapshot was created with Elasticsearch version [36.34.78-beta2] which is higher than the version of this node [7.10.2]"
      }
    ],
    "type": "snapshot_restore_exception",
    "reason": "[aos:2/D-oyYSscSdCbZFcmPZa_yg] the snapshot was created with Elasticsearch version [36.34.78-beta2] which is higher than the version of this node [7.10.2]"
  },
  "status": 500
}
  1. 从 Easysearch 1.8.2 还原到 Amazon OpenSearch2.13 报错如下(无论是否开启兼容模式):
{
  "error": {
    "root_cause": [
      {
        "type": "snapshot_restore_exception",
        "reason": "[easy_repository:2/LE18AWHlRJu9rpz9BJatUQ] cannot restore index [my_indexs] because it cannot be upgraded"
      }
    ],
    "type": "snapshot_restore_exception",
    "reason": "[easy_repository:2/LE18AWHlRJu9rpz9BJatUQ] cannot restore index [my_indexs] because it cannot be upgraded",
    "caused_by": {
      "type": "illegal_state_exception",
      "reason": "The index [[my_indexs/VHOo7yfDTRa48uhQvquFzQ]] was created with version [1.8.2] but the minimum compatible version is OpenSearch 1.0.0 (or Elasticsearch 7.0.0). It should be re-indexed in OpenSearch 1.x (or Elasticsearch 7.x) before upgrading to 2.13.0."
    }
  },
  "status": 500
}
  1. Amazon OpenSearch 还原到 Easysearch 同样失败
{
  "error": {
    "root_cause": [
      {
        "type": "snapshot_restore_exception",
        "reason": "[aoss:2/D-oyYSscSdCbZFcmPZa_yg] cannot restore index [aos] because it cannot be upgraded"
      }
    ],
    "type": "snapshot_restore_exception",
    "reason": "[aoss:2/D-oyYSscSdCbZFcmPZa_yg] cannot restore index [aos] because it cannot be upgraded",
    "caused_by": {
      "type": "illegal_state_exception",
      "reason": "The index [[aos/864WjTAXQCaxJ829V5ktaw]] was created with version [36.34.78-beta2] but the minimum compatible version is [6.0.0]. It should be re-indexed in Easysearch 6.x before upgrading to 1.8.2."
    }
  },
  "status": 500
}
  1. Elasticsearch 8.14.3 迁移到 Amazon OpenSearch 或者 Elasticsearch 都是有这个报错:
{
  "error": {
    "root_cause": [
      {
        "type": "parsing_exception",
        "reason": "Failed to parse object: unknown field [uuid] found",
        "line": 1,
        "col": 25
      }
    ],
    "type": "repository_exception",
    "reason": "[snap] Unexpected exception when loading repository data",
    "caused_by": {
      "type": "parsing_exception",
      "reason": "Failed to parse object: unknown field [uuid] found",
      "line": 1,
      "col": 25
    }
  },
  "status": 500
}

这是由于 Elasticsearch 8 在创建快照的时候会默认加上一个 UUID 的字段,所以我们低版本的 Easysearch、Amazon OpenSearch 中会找不到这个字段,在执行GET _cat/snapshots/snap?v的时候就报错,及时在注册存储库的时候显示加上 UUID 的字段也无事无补。

{
  "snapshot-repo-name": {
    "type": "s3",
    "uuid": "qlJ0uqErRmW6aww2Fyt4Fg",
    "settings": {
    "bucket": "<bucket-name>",
    "base_path": "<bucket-prefix>",
    }
  },

以下是兼容性对比,每行第一列代表源集群,第一行代表目标集群:

快照兼容对比 Easysearch 1.8.2 Elasticsearch 7.10.2 OpenSearch 2.13
Easysearch 1.8.2 兼容 不兼容 不兼容
Elasticsearch 7.10.2 兼容 兼容 兼容
OpenSearch 2.13 不兼容 不兼容 兼容

Elasticsearch 的兼容列表官方的列表如下:

参考文献

  1. 开始使用 Elastic Stack 和 Docker Compose:第 1 部分
    https://www.elastic.co/cn/blog/getting-started-with-the-elastic-stack-and-docker-compose

  2. Docker Compose 部署多节点 Elasticsearch
    https://www.elastic.co/guide/en/elasticsearch/reference/7.10/docker.html#docker-compose-file

  3. repository-s3 教程
    https://www.elastic.co/guide/en/elasticsearch/reference/8.14/repository-s3.html
    https://www.elastic.co/guide/en/elasticsearch/plugins/7.10/repository-s3.html

  4. snapshot-restore
    https://www.elastic.co/guide/en/elasticsearch/reference/7.10/snapshot-restore.html

  5. 在亚马逊 OpenSearch 服务中创建索引快照
    https://docs.amazonaws.cn/zh_cn/opensearch-service/latest/developerguide/managedomains-snapshots.html#managedomains-snapshot-restore

  6. 教程:迁移至 Amazon OpenSearch Service
    https://docs.amazonaws.cn/zh_cn/opensearch-service/latest/developerguide/migration.html

关于 Easysearch 有奖征文活动

黑神话悟空

无论你是 Easysearch 的老用户,还是第一次听说这个名字,只要你对 INFINI Labs 旗下的 Easysearch 产品感兴趣,或者是希望了解 Easysearch,都可以参加这次活动。

详情查看:Easysearch 征文活动

作者:韩旭,亚马逊云技术支持,亚马逊云科技技领云博主,目前专注于云计算开发和大数据领域。

原文:https://infinilabs.cn/blog/2024/comparison-of-snapshot-compatibility-between-easysearch-elasticsearch-and-opensearch/

收起阅读 »