【搜索客社区日报】第1894期 (2024-09-04)
https://zhuanlan.zhihu.com/p/714675735
2.时隔3年重新开源,这些 ElasticSearch 应用技能运维必会?
https://mp.weixin.qq.com/s/vGbH-rkurt2ydRBPiVrC4w
3.Elasticsearch 回顾:向量搜索创新的时间线
https://blog.csdn.net/UbuntuTo ... 68994
编辑:kin122
更多资讯:http://news.searchkit.cn
https://zhuanlan.zhihu.com/p/714675735
2.时隔3年重新开源,这些 ElasticSearch 应用技能运维必会?
https://mp.weixin.qq.com/s/vGbH-rkurt2ydRBPiVrC4w
3.Elasticsearch 回顾:向量搜索创新的时间线
https://blog.csdn.net/UbuntuTo ... 68994
编辑:kin122
更多资讯:http://news.searchkit.cn
收起阅读 »
【搜索客社区日报】第1893期 (2024-09-03)
https://medium.com/%40imriqwe/ ... f7622
2. ES里的搜索上下文和filter上下文是啥?(需要梯子)
https://mahajanjatin-14.medium ... d31de
3. 来来来,老司机教你几步解决未分配的分片(需要梯子)
https://medium.com/%40yago82/a ... 33d9d
编辑:斯蒂文
更多资讯:http://news.searchkit.cn
https://medium.com/%40imriqwe/ ... f7622
2. ES里的搜索上下文和filter上下文是啥?(需要梯子)
https://mahajanjatin-14.medium ... d31de
3. 来来来,老司机教你几步解决未分配的分片(需要梯子)
https://medium.com/%40yago82/a ... 33d9d
编辑:斯蒂文
更多资讯:http://news.searchkit.cn
收起阅读 »
【搜索客社区日报】第1892期 (2024-09-02)
https://blog.csdn.net/tMb8Z9Vd ... 61894
2. 【2024年8月】盘点国内可用的 Web Search API,仅此一家 —— 博查AI搜索,可平替Bing Search API
https://blog.csdn.net/cxk19980 ... 19049
3. 8月数据库圈值得关注的事 | 2024
https://tech.it168.com/a2024/0 ... shtml
4. 欢迎来到 AI 中心新时代——Arista EOS 系统助力构建强大的 AI 网络
https://www.bytebt.cn/bytebrid ... .html
5. 从RAG到TAG:探索AI与数据库的完美结合
https://mp.weixin.qq.com/s/o8sR4YYx71xh-IW9D00FzA
编辑:Muse
更多资讯:http://news.searchkit.cn
https://blog.csdn.net/tMb8Z9Vd ... 61894
2. 【2024年8月】盘点国内可用的 Web Search API,仅此一家 —— 博查AI搜索,可平替Bing Search API
https://blog.csdn.net/cxk19980 ... 19049
3. 8月数据库圈值得关注的事 | 2024
https://tech.it168.com/a2024/0 ... shtml
4. 欢迎来到 AI 中心新时代——Arista EOS 系统助力构建强大的 AI 网络
https://www.bytebt.cn/bytebrid ... .html
5. 从RAG到TAG:探索AI与数据库的完美结合
https://mp.weixin.qq.com/s/o8sR4YYx71xh-IW9D00FzA
编辑:Muse
更多资讯:http://news.searchkit.cn 收起阅读 »
🔥 Rust China Conf 2024 震撼来袭,INFINI Pizza 搜索引擎重磅亮相!
随着 Rust 语言以其在性能、安全性和并发性方面的卓越表现,赢得了全球开发者的青睐,Rust 社区正迎来前所未有的发展机遇。在这个充满活力与潜力的背景下,Rust China Conf 2024 震撼来袭!
Rust 大会介绍
Rust 大会即将于 9 月 7 日 - 8 日在上海盛大举办。作为年度国内规模最大并唯一的 Rust 线下大型会议,它由 Rust 中文社区发起主办、知名企业和开源组织联合协办,深受开发者与相关企业的喜爱与推崇。自 2020 年起,已连续举办四年,今年预计将吸引超过 400 名一线程序员和企业用户,他们已在个人或公司项目中实践 Rust,期待在此交流心得、共享经验,共同推动 Rust 生态的繁荣与发展。
INFINI Labs 亮相 Rust 大会
作为本次大会的重要赞助商之一,INFINI Labs 将携手蚂蚁集团、字节跳动、JetBrains、亚马逊云科技、华为、Greptime 等知名企业,为与会者带来创新的灵感和实践的洞见。INFINI Labs 的创始人 & CEO 曾勇先生将分享《基于 Rust 编写下一代实时搜索引擎》—— INFINI Pizza 的故事,这款搜索引擎旨在解决海量数据的实时搜索需求,释放现代硬件的潜力,为企业打造高效、准确的搜索解决方案。
大会部分议题亮点抢先看
《人人可用的 Rust》
讲师简介: Rebecca Rumbul,Rust 基金会执行董事兼首席执行官, OpenUK 董事会成员, OpenSSF 管理委员会成员。
议题介绍: 本次分享将介绍 Rust 基金会如何投资于工程和推广工作,以确保 Rust 对所有人来说都是有用、高效且安全的。
《携手共建繁荣的 Rust OS 内核软件生态》
讲师简介: 田洪亮,田洪亮博士是蚂蚁研究院操作系统方向的负责人, 在 Rust 编程和内核开发方面有丰富的经验,荣获 OS2ATC'24 颁发的开源创新先锋奖。他发起的 Occlum 项目,是业界最早的 Rust OS 开源项目, 已发展成可信执行环境中最流行的 library OS,荣登中科协发布的"科创中国"开源创新榜单。曾就职于 Intel Labs China,博士毕业于清华大学。
议题介绍: Rust 语言以其高效、安全和生产力被视为系统编程,尤其是 OS 编程的未来。但在开发 OS 内核时,存在频繁使用 unsafe、缺乏 Cargo 支持、以及可重用的 no_std crates 不足等痛点。星绽开源社区提出了星绽 Framework 和星绽 OSDK,提供强大的 safe API 和开发工具链, 使得 Rust 内核开发更加安全、高效,并促进了 no_std crates 的复用与组合,旨在提升开发者生产力并推动 Rust 生态的繁荣。
《用 Rust 构建高性能的生成式 AI 应用》
讲师简介: 王宇博,现任亚马逊云科技大中华区开发者关系总监、首席布道师,致力于新一代信息技术与创新在开发者中的布道推广,以及开发者生态体系的建设。
议题介绍: 生成式 AI 技术在自然语言处理和图像生成领域快速发展。对于 Rust 开发者来说,利用 Rust 的高性能特性构建高效、可靠的生成式 AI 应用至关重要。本次演讲将深入探讨在 Rust 中开发生成式 AI 应用的实践方法,分析其在数值计算和并发编程中的优势,并分享确保应用可靠性和安全性的最佳实践,帮助开发者掌握构建高性能生成式 AI 应用的技巧。
《字节跳动在 Rust 服务端方向的实践与思考》
讲师简介: 吴迪,字节跳动服务框架 Rust 负责人,负责字节跳动 Rust 生态建设与推广落地。
议题介绍: 字节跳动三年前开始投资 Rust 服务端开发,构建了内部生态并开源核心框架 Volo。现在已在多个业务线成功落地,规模国内最大,收益超预期。本次分享将介绍选择 Rust 的原因、落地心得及未来技术趋势的思考。
《Async Rust 维测&定位的探索和思考》
讲师简介:
陈明煜:毕业于加州大学圣地亚哥分校,现就职于华为,OpenHarmony Ylong Rust 异步框架的开发者,致力于推动 OH 应用的 Rust 异步化。
楼智豪:毕业于浙江大学,现就职于华为,参与过 Rust 与 Cangjie 语言的开源贡献,现从事 Rust 在 OpenHarmony 中的应用。
议题介绍: 本议题将介绍我们在 OpenHarmony 中遇到的一些异步框架使用问题,以及我们在 Rust 异步调测与定位方面的探索。内容包括对业界常见异步框架的维测能力调研,以及对 Rust 无栈协程的推栈处理和跨 FFI 的 C++ exception 问题解决方法,旨在提升 Rust 异步的可商用性。
《Rust HashMap:比看起来更复杂》
讲师简介: 曹瑞秋,蚂蚁集团高级开发工程师,Apache HoraeDB/CeresDB 核心开发者,Apache HoraeDB PPMC member,长期专注于时序数据库领域。
议题介绍: Rust HashMap 看似简单,实际使用中存在诸多"坑点",尤其在 CPU 消耗和内存占用方面。分段 HashMap 设计中的伪共享和内存访问局部性差会影响性能。HashMap 的 capacity 通常远大于指定值,加之内存访问特性,会占据大量物理内存。此外,with_capacity
方法和 allocator 内存池的使用不当可能导致内存释放问题。因此,使用 Rust HashMap 需要细心设计。
《Rust 和 C++ 互操作及交叉编译》
讲师简介: 朱树磊,北京大学物理学士,德国 TUM 硕士,现任浙江大华技术股份有限公司高级算法专家。从事人工智能算法研发工作 10 余年,擅长机器学习、深度学习和大数据智能等技术领域,具备丰富的人工智能算法系统设计和开发经验。
议题介绍: Rust 和 C++ 经常需要共存,但 C++ 的交叉编译复杂性是一个挑战。本次分享将介绍如何使用 cxx 让 Rust 和 C++ 代码共存,并通过 LLVM 工具链补齐 C++ 交叉编译的短板,让 C++ 和 Rust 的互操作简单可移植。
《超大规模:抖音直播的 Rust 技术落地实践》
讲师简介: 赵鹏,抖音直播架构师,Rust 技术负责人。
议题介绍: 抖音直播从 2022 年开始引入 Rust 技术栈,用于应对直播业务中的超低延时、超高性能挑战,取得了远超预期巨大的收益。两年时间里我们有 20+ 个头部服务完成了 Rust 重构,吞吐平均提升超 100%,节省了 16w 核 CPU 资源,多个服务 SLA 提升至 6 个 9,目前我们的 Rust 服务在线上承担着超 4000w qps 的请求。Rust 技术在抖音直播研发团队二级部门实现了 100% 覆盖,每个子业务团队都有 Rust 服务在线上运行。我们还成立了专门的 Rust 技术组帮助解决业务公共问题,沉淀了完整的 Rust 研发流水线,基本实现了 Rust 新人两周即可上手开发,两个月完成一个 Rust 服务上线的速度。综合 Rust 服务类型覆盖、数量、资源占用、开发人员、生态、基建完善程度,抖音直播已经是国内规模最大的 Rust 技术生产环境落地团队,本次分享将给大家介绍我们从选型、验证、落地、推广到维护过程中的真实实践经验,希望能够帮助到其他同行朋友。
大会报名
本次大会致力于成为中国 Rustaceans 面对面交流的盛宴,为国内的 Rust 开发者和企业提供一次充分的成果展示、技术分享、能力提升、行业资讯交流、企业人才储备建设的机会。欢迎购票参与现场交流。
🔗 报名链接 / 扫二维码:
https://4292817522623.huodongxing.com/event/5757822319111
关于极限科技(INFINI Labs)
极限科技,全称极限数据(北京)科技有限公司,是一家专注于实时搜索与数据分析的软件公司。旗下品牌极限实验室(INFINI Labs)致力于打造极致易用的数据探索与分析体验。
极限科技是一支年轻的团队,采用天然分布式的方式来进行远程协作,员工分布在全球各地,希望通过努力成为中国乃至全球企业大数据实时搜索分析产品的首选,为中国技术品牌输出添砖加瓦。
随着 Rust 语言以其在性能、安全性和并发性方面的卓越表现,赢得了全球开发者的青睐,Rust 社区正迎来前所未有的发展机遇。在这个充满活力与潜力的背景下,Rust China Conf 2024 震撼来袭!
Rust 大会介绍
Rust 大会即将于 9 月 7 日 - 8 日在上海盛大举办。作为年度国内规模最大并唯一的 Rust 线下大型会议,它由 Rust 中文社区发起主办、知名企业和开源组织联合协办,深受开发者与相关企业的喜爱与推崇。自 2020 年起,已连续举办四年,今年预计将吸引超过 400 名一线程序员和企业用户,他们已在个人或公司项目中实践 Rust,期待在此交流心得、共享经验,共同推动 Rust 生态的繁荣与发展。
INFINI Labs 亮相 Rust 大会
作为本次大会的重要赞助商之一,INFINI Labs 将携手蚂蚁集团、字节跳动、JetBrains、亚马逊云科技、华为、Greptime 等知名企业,为与会者带来创新的灵感和实践的洞见。INFINI Labs 的创始人 & CEO 曾勇先生将分享《基于 Rust 编写下一代实时搜索引擎》—— INFINI Pizza 的故事,这款搜索引擎旨在解决海量数据的实时搜索需求,释放现代硬件的潜力,为企业打造高效、准确的搜索解决方案。
大会部分议题亮点抢先看
《人人可用的 Rust》
讲师简介: Rebecca Rumbul,Rust 基金会执行董事兼首席执行官, OpenUK 董事会成员, OpenSSF 管理委员会成员。
议题介绍: 本次分享将介绍 Rust 基金会如何投资于工程和推广工作,以确保 Rust 对所有人来说都是有用、高效且安全的。
《携手共建繁荣的 Rust OS 内核软件生态》
讲师简介: 田洪亮,田洪亮博士是蚂蚁研究院操作系统方向的负责人, 在 Rust 编程和内核开发方面有丰富的经验,荣获 OS2ATC'24 颁发的开源创新先锋奖。他发起的 Occlum 项目,是业界最早的 Rust OS 开源项目, 已发展成可信执行环境中最流行的 library OS,荣登中科协发布的"科创中国"开源创新榜单。曾就职于 Intel Labs China,博士毕业于清华大学。
议题介绍: Rust 语言以其高效、安全和生产力被视为系统编程,尤其是 OS 编程的未来。但在开发 OS 内核时,存在频繁使用 unsafe、缺乏 Cargo 支持、以及可重用的 no_std crates 不足等痛点。星绽开源社区提出了星绽 Framework 和星绽 OSDK,提供强大的 safe API 和开发工具链, 使得 Rust 内核开发更加安全、高效,并促进了 no_std crates 的复用与组合,旨在提升开发者生产力并推动 Rust 生态的繁荣。
《用 Rust 构建高性能的生成式 AI 应用》
讲师简介: 王宇博,现任亚马逊云科技大中华区开发者关系总监、首席布道师,致力于新一代信息技术与创新在开发者中的布道推广,以及开发者生态体系的建设。
议题介绍: 生成式 AI 技术在自然语言处理和图像生成领域快速发展。对于 Rust 开发者来说,利用 Rust 的高性能特性构建高效、可靠的生成式 AI 应用至关重要。本次演讲将深入探讨在 Rust 中开发生成式 AI 应用的实践方法,分析其在数值计算和并发编程中的优势,并分享确保应用可靠性和安全性的最佳实践,帮助开发者掌握构建高性能生成式 AI 应用的技巧。
《字节跳动在 Rust 服务端方向的实践与思考》
讲师简介: 吴迪,字节跳动服务框架 Rust 负责人,负责字节跳动 Rust 生态建设与推广落地。
议题介绍: 字节跳动三年前开始投资 Rust 服务端开发,构建了内部生态并开源核心框架 Volo。现在已在多个业务线成功落地,规模国内最大,收益超预期。本次分享将介绍选择 Rust 的原因、落地心得及未来技术趋势的思考。
《Async Rust 维测&定位的探索和思考》
讲师简介:
陈明煜:毕业于加州大学圣地亚哥分校,现就职于华为,OpenHarmony Ylong Rust 异步框架的开发者,致力于推动 OH 应用的 Rust 异步化。
楼智豪:毕业于浙江大学,现就职于华为,参与过 Rust 与 Cangjie 语言的开源贡献,现从事 Rust 在 OpenHarmony 中的应用。
议题介绍: 本议题将介绍我们在 OpenHarmony 中遇到的一些异步框架使用问题,以及我们在 Rust 异步调测与定位方面的探索。内容包括对业界常见异步框架的维测能力调研,以及对 Rust 无栈协程的推栈处理和跨 FFI 的 C++ exception 问题解决方法,旨在提升 Rust 异步的可商用性。
《Rust HashMap:比看起来更复杂》
讲师简介: 曹瑞秋,蚂蚁集团高级开发工程师,Apache HoraeDB/CeresDB 核心开发者,Apache HoraeDB PPMC member,长期专注于时序数据库领域。
议题介绍: Rust HashMap 看似简单,实际使用中存在诸多"坑点",尤其在 CPU 消耗和内存占用方面。分段 HashMap 设计中的伪共享和内存访问局部性差会影响性能。HashMap 的 capacity 通常远大于指定值,加之内存访问特性,会占据大量物理内存。此外,with_capacity
方法和 allocator 内存池的使用不当可能导致内存释放问题。因此,使用 Rust HashMap 需要细心设计。
《Rust 和 C++ 互操作及交叉编译》
讲师简介: 朱树磊,北京大学物理学士,德国 TUM 硕士,现任浙江大华技术股份有限公司高级算法专家。从事人工智能算法研发工作 10 余年,擅长机器学习、深度学习和大数据智能等技术领域,具备丰富的人工智能算法系统设计和开发经验。
议题介绍: Rust 和 C++ 经常需要共存,但 C++ 的交叉编译复杂性是一个挑战。本次分享将介绍如何使用 cxx 让 Rust 和 C++ 代码共存,并通过 LLVM 工具链补齐 C++ 交叉编译的短板,让 C++ 和 Rust 的互操作简单可移植。
《超大规模:抖音直播的 Rust 技术落地实践》
讲师简介: 赵鹏,抖音直播架构师,Rust 技术负责人。
议题介绍: 抖音直播从 2022 年开始引入 Rust 技术栈,用于应对直播业务中的超低延时、超高性能挑战,取得了远超预期巨大的收益。两年时间里我们有 20+ 个头部服务完成了 Rust 重构,吞吐平均提升超 100%,节省了 16w 核 CPU 资源,多个服务 SLA 提升至 6 个 9,目前我们的 Rust 服务在线上承担着超 4000w qps 的请求。Rust 技术在抖音直播研发团队二级部门实现了 100% 覆盖,每个子业务团队都有 Rust 服务在线上运行。我们还成立了专门的 Rust 技术组帮助解决业务公共问题,沉淀了完整的 Rust 研发流水线,基本实现了 Rust 新人两周即可上手开发,两个月完成一个 Rust 服务上线的速度。综合 Rust 服务类型覆盖、数量、资源占用、开发人员、生态、基建完善程度,抖音直播已经是国内规模最大的 Rust 技术生产环境落地团队,本次分享将给大家介绍我们从选型、验证、落地、推广到维护过程中的真实实践经验,希望能够帮助到其他同行朋友。
大会报名
本次大会致力于成为中国 Rustaceans 面对面交流的盛宴,为国内的 Rust 开发者和企业提供一次充分的成果展示、技术分享、能力提升、行业资讯交流、企业人才储备建设的机会。欢迎购票参与现场交流。
🔗 报名链接 / 扫二维码:
https://4292817522623.huodongxing.com/event/5757822319111
关于极限科技(INFINI Labs)
极限科技,全称极限数据(北京)科技有限公司,是一家专注于实时搜索与数据分析的软件公司。旗下品牌极限实验室(INFINI Labs)致力于打造极致易用的数据探索与分析体验。
极限科技是一支年轻的团队,采用天然分布式的方式来进行远程协作,员工分布在全球各地,希望通过努力成为中国乃至全球企业大数据实时搜索分析产品的首选,为中国技术品牌输出添砖加瓦。
收起阅读 »【搜索客社区日报】第1891期 (2024-08-30)
https://infinilabs.cn/blog/202 ... izza/
2、Elastic 宣布修改开源协议为 AGPL,Elasticsearch 再次成为开源软件
https://mp.weixin.qq.com/s/xA82A3Y6pUmhoF6LYOpimw
3、搜索客 Meetup 活动回顾 - Elasticsearch 的代码结构和写入查询流程的解读-下篇(附PPT和视频回放)
https://mp.weixin.qq.com/s/lL0BxN7j8aUTXfegFI_sYw
4、听声识病不再是神话!Google AI用声音数据预测健康风险,让声音成为健康监测新工具
https://mp.weixin.qq.com/s/Fx_nBP7ERDKN9FOR4idlNg
编辑:Fred
更多资讯:http://news.searchkit.cn
https://infinilabs.cn/blog/202 ... izza/
2、Elastic 宣布修改开源协议为 AGPL,Elasticsearch 再次成为开源软件
https://mp.weixin.qq.com/s/xA82A3Y6pUmhoF6LYOpimw
3、搜索客 Meetup 活动回顾 - Elasticsearch 的代码结构和写入查询流程的解读-下篇(附PPT和视频回放)
https://mp.weixin.qq.com/s/lL0BxN7j8aUTXfegFI_sYw
4、听声识病不再是神话!Google AI用声音数据预测健康风险,让声音成为健康监测新工具
https://mp.weixin.qq.com/s/Fx_nBP7ERDKN9FOR4idlNg
编辑:Fred
更多资讯:http://news.searchkit.cn 收起阅读 »
Elastic 宣布修改开源协议为 AGPL:Elasticsearch 再次成为开源软件
今日快讯!就在刚刚,开源搜索领域行业巨头 Elastic 官方博客发表了一篇最新公告《Elasticsearch is Open Source, Again》,Elastic 创始人& CTO Shay Banon 宣布 Elasticsearch 和 Kibana 许可证协议修改为 AGPL。
以下为搜索客社区从 Elastic 官方博客翻译的原文内容:
Elasticsearch 再次成为开源软件
[D.N.A] Elasticsearch 和 Kibana 现在可以再次被称为开源软件了。这句话让我感到无比的兴奋。真的忍不住跳起来庆祝!我们所有在 Elastic 的人都很高兴。开源精神是我的DNA,也是 Elastic 的DNA。能够再次称 Elasticsearch 为开源软件,真的是一种纯粹的快乐。
[LOVE.] 简而言之,我们将在接下来的几周内,除了 ELv2 和 SSPL 之外,增加 AGPL 作为另一个许可选项。在更改许可后,我们从未停止过像一个开源社区一样相信和行动。但通过使用 AGPL 这一获得开放源码促进会(OSI)批准的许可,消除了人们可能存在的任何疑问或混淆。
[Not Like Us] 我们在 Elastic 从未停止过对开源的信仰。我个人对开源的信仰也从未动摇,至今已有 25 年了。那么为什么三年前我们要做出改变呢?我们遇到了与 AWS 相关的问题,以及他们的服务引发的市场混乱。在尝试了所有能想到的其他选项后,我们更改了许可协议,明知道这会导致 Elasticsearch 被分叉成另一个名称并走上不同的发展轨迹。这是一个漫长的故事。
[Like That] 好消息是,虽然过程痛苦,但结果奏效了。三年后,亚马逊已经完全投入到了他们的分叉项目中,市场的混乱(大部分)得到了缓解,我们与 AWS 的合作伙伴关系比以往更强。我们甚至被评为 AWS 的年度合作伙伴。我一直希望时间能过去得足够久,以至于我们可以安全地回到开源项目的状态——现在终于到了。
[All The Stars] 我们希望尽可能简化用户的使用体验。我们有用户非常喜欢 ELv2(一个受 BSD 启发的许可)。我们也有用户已经批准使用 SSPL(通过 MongoDB 使用)。这就是为什么我们只是增加了一个选项,而不是移除任何东西。如果你已经在使用并喜欢 Elasticsearch,请继续使用,没有任何变化。对于其他人,现在你也可以选择使用 AGPL。
[LOYALTY.] 我们选择 AGPL 而不是其他许可,是因为我们希望通过与 OSI 的合作,能在开源许可领域创造更多的选项。随着我们更改许可以来的发展(例如 Grafana 从 Apache2 转移到 AGPL),也许 AGPL 已经足够适用于像我们这样的基础设施软件了。我们致力于找到最合适的解决方案。
[euphoria] 我非常高兴能够再次称 Elasticsearch 为开源软件。
[Alright] 任何改变都可能引发混淆,当然也可能引来一些网络喷子。(网络喷子总是存在的,对吧?)让我们愉快地回答一些可能出现的问题吧。我可以想象到的一些问题如下,但我们会继续补充。
“更改许可是个错误,Elastic 现在在回撤”:我们在三年前更改许可时消除了很多市场混乱。由于我们的行动,很多事情已经改变。现在是一个完全不同的市场环境。我们不生活在过去。我们希望为用户打造一个更好的未来。正是因为我们当时采取了行动,现在我们才有能力采取新的行动。
“AGPL 不是真正的开源许可,X 才是”:AGPL 是获得 OSI 批准的许可,并且被广泛采用。例如,MongoDB 曾经使用 AGPL,Grafana 现在也是 AGPL。这表明 AGPL 并不影响使用或流行度。我们选择 AGPL 是因为我们认为这是与 OSI 一起为世界开辟更多开源道路的最佳方式,而不是减少开源。
“Elastic 更改许可是因为他们表现不好”:我要说的是,我今天对 Elastic 的未来依然充满期待。我为我们的产品和团队的执行力感到无比自豪。我们发布了无状态的 Elasticsearch ES|QL 和大量用于 GenAI 用例的向量数据库/混合搜索改进。我们在日志记录和可观察性方面大力投入 OTel。我们的安全产品 SIEM 不断添加令人惊叹的功能,并且是市场上增长最快的产品之一。用户的反应让我们感到非常谦卑。股市总有起伏,但我可以向你保证,我们始终着眼于长远发展,而这次的变更就是其中的一部分。
如果我们看到更多问题,会在上面继续添加,以期减少混淆。
[HUMBLE.] 为未来而构建真是令人兴奋。Elasticsearch 回归开源。万岁!这真是一件美妙的事情。今天真是美好的一天。
Forever :elasticheart: Open Source
Shay 2024-08-30
原文地址:https://www.elastic.co/blog/elasticsearch-is-open-source-again/
社区热评
Elasticsearch 再次回归开源的消息迅速引发了技术社区的广泛关注。这不仅是 Elastic 对自身开源信念的重申,也是其在激烈市场竞争中精心策划的一次战略调整。
三年前,Elastic 因与 AWS 的市场竞争而选择更改许可协议,这一决定在当时引发了不小的争议。尽管如此,事实证明,这一策略有效地减少了市场上的混淆,也为 Elastic 与 AWS 的合作奠定了更坚实的基础。如今,Elastic 再度选择开源,并新增 AGPL 作为许可选项,这一举措无疑展现了 Elastic 在市场中更加成熟的定位和对未来发展的自信。
这一变化不仅仅是一个公司的商业决策,更是开源生态系统的一次重要信号。Elastic 的回归开源,传递出一个明确的信息:即使在商业竞争中,开源仍然是企业实现长远发展的重要路径。随着这一决定的落地,其他软件公司可能也会重新审视自身的许可策略,推动更多开源项目的发展与创新。
此外,Elastic 选择 AGPL 作为新许可选项,也显示出其对开源生态未来走向的深刻洞察。AGPL 的引入,表明 Elastic 希望在开源社区中保持灵活性和多样性,同时推动整个行业向更加开放和透明的方向迈进。
总体而言,Elastic 重返开源的举动,不仅意在巩固其在开源社区中的地位,也为行业树立了一个新的标杆。这一事件无疑将成为开源软件发展史上的重要篇章,未来可能会激发更多企业重新考虑其开源战略,进而推动整个技术行业的进一步繁荣与进步。
让我们拭目以待!
今日快讯!就在刚刚,开源搜索领域行业巨头 Elastic 官方博客发表了一篇最新公告《Elasticsearch is Open Source, Again》,Elastic 创始人& CTO Shay Banon 宣布 Elasticsearch 和 Kibana 许可证协议修改为 AGPL。
以下为搜索客社区从 Elastic 官方博客翻译的原文内容:
Elasticsearch 再次成为开源软件
[D.N.A] Elasticsearch 和 Kibana 现在可以再次被称为开源软件了。这句话让我感到无比的兴奋。真的忍不住跳起来庆祝!我们所有在 Elastic 的人都很高兴。开源精神是我的DNA,也是 Elastic 的DNA。能够再次称 Elasticsearch 为开源软件,真的是一种纯粹的快乐。
[LOVE.] 简而言之,我们将在接下来的几周内,除了 ELv2 和 SSPL 之外,增加 AGPL 作为另一个许可选项。在更改许可后,我们从未停止过像一个开源社区一样相信和行动。但通过使用 AGPL 这一获得开放源码促进会(OSI)批准的许可,消除了人们可能存在的任何疑问或混淆。
[Not Like Us] 我们在 Elastic 从未停止过对开源的信仰。我个人对开源的信仰也从未动摇,至今已有 25 年了。那么为什么三年前我们要做出改变呢?我们遇到了与 AWS 相关的问题,以及他们的服务引发的市场混乱。在尝试了所有能想到的其他选项后,我们更改了许可协议,明知道这会导致 Elasticsearch 被分叉成另一个名称并走上不同的发展轨迹。这是一个漫长的故事。
[Like That] 好消息是,虽然过程痛苦,但结果奏效了。三年后,亚马逊已经完全投入到了他们的分叉项目中,市场的混乱(大部分)得到了缓解,我们与 AWS 的合作伙伴关系比以往更强。我们甚至被评为 AWS 的年度合作伙伴。我一直希望时间能过去得足够久,以至于我们可以安全地回到开源项目的状态——现在终于到了。
[All The Stars] 我们希望尽可能简化用户的使用体验。我们有用户非常喜欢 ELv2(一个受 BSD 启发的许可)。我们也有用户已经批准使用 SSPL(通过 MongoDB 使用)。这就是为什么我们只是增加了一个选项,而不是移除任何东西。如果你已经在使用并喜欢 Elasticsearch,请继续使用,没有任何变化。对于其他人,现在你也可以选择使用 AGPL。
[LOYALTY.] 我们选择 AGPL 而不是其他许可,是因为我们希望通过与 OSI 的合作,能在开源许可领域创造更多的选项。随着我们更改许可以来的发展(例如 Grafana 从 Apache2 转移到 AGPL),也许 AGPL 已经足够适用于像我们这样的基础设施软件了。我们致力于找到最合适的解决方案。
[euphoria] 我非常高兴能够再次称 Elasticsearch 为开源软件。
[Alright] 任何改变都可能引发混淆,当然也可能引来一些网络喷子。(网络喷子总是存在的,对吧?)让我们愉快地回答一些可能出现的问题吧。我可以想象到的一些问题如下,但我们会继续补充。
“更改许可是个错误,Elastic 现在在回撤”:我们在三年前更改许可时消除了很多市场混乱。由于我们的行动,很多事情已经改变。现在是一个完全不同的市场环境。我们不生活在过去。我们希望为用户打造一个更好的未来。正是因为我们当时采取了行动,现在我们才有能力采取新的行动。
“AGPL 不是真正的开源许可,X 才是”:AGPL 是获得 OSI 批准的许可,并且被广泛采用。例如,MongoDB 曾经使用 AGPL,Grafana 现在也是 AGPL。这表明 AGPL 并不影响使用或流行度。我们选择 AGPL 是因为我们认为这是与 OSI 一起为世界开辟更多开源道路的最佳方式,而不是减少开源。
“Elastic 更改许可是因为他们表现不好”:我要说的是,我今天对 Elastic 的未来依然充满期待。我为我们的产品和团队的执行力感到无比自豪。我们发布了无状态的 Elasticsearch ES|QL 和大量用于 GenAI 用例的向量数据库/混合搜索改进。我们在日志记录和可观察性方面大力投入 OTel。我们的安全产品 SIEM 不断添加令人惊叹的功能,并且是市场上增长最快的产品之一。用户的反应让我们感到非常谦卑。股市总有起伏,但我可以向你保证,我们始终着眼于长远发展,而这次的变更就是其中的一部分。
如果我们看到更多问题,会在上面继续添加,以期减少混淆。
[HUMBLE.] 为未来而构建真是令人兴奋。Elasticsearch 回归开源。万岁!这真是一件美妙的事情。今天真是美好的一天。
Forever :elasticheart: Open Source
Shay 2024-08-30
原文地址:https://www.elastic.co/blog/elasticsearch-is-open-source-again/
社区热评
Elasticsearch 再次回归开源的消息迅速引发了技术社区的广泛关注。这不仅是 Elastic 对自身开源信念的重申,也是其在激烈市场竞争中精心策划的一次战略调整。
三年前,Elastic 因与 AWS 的市场竞争而选择更改许可协议,这一决定在当时引发了不小的争议。尽管如此,事实证明,这一策略有效地减少了市场上的混淆,也为 Elastic 与 AWS 的合作奠定了更坚实的基础。如今,Elastic 再度选择开源,并新增 AGPL 作为许可选项,这一举措无疑展现了 Elastic 在市场中更加成熟的定位和对未来发展的自信。
这一变化不仅仅是一个公司的商业决策,更是开源生态系统的一次重要信号。Elastic 的回归开源,传递出一个明确的信息:即使在商业竞争中,开源仍然是企业实现长远发展的重要路径。随着这一决定的落地,其他软件公司可能也会重新审视自身的许可策略,推动更多开源项目的发展与创新。
此外,Elastic 选择 AGPL 作为新许可选项,也显示出其对开源生态未来走向的深刻洞察。AGPL 的引入,表明 Elastic 希望在开源社区中保持灵活性和多样性,同时推动整个行业向更加开放和透明的方向迈进。
总体而言,Elastic 重返开源的举动,不仅意在巩固其在开源社区中的地位,也为行业树立了一个新的标杆。这一事件无疑将成为开源软件发展史上的重要篇章,未来可能会激发更多企业重新考虑其开源战略,进而推动整个技术行业的进一步繁荣与进步。
让我们拭目以待!
收起阅读 »活动回顾 - 第3期 搜索客 Meetup 线上直播活动圆满结束,附 PPT 下载
2024 年 8 月 28 日,由搜索客社区和极限科技(INFINI Labs)联合举办的第 3 期线上 Meetup 技术交流直播活动圆满结束。本期 Meetup 直播活动吸引了超过 700+ 人次的技术爱好者参与,共同学习和交流了 Elasticsearch 源码结构、写入和查询流程等。
主题:Elasticsearch 的代码结构和写入查询流程的解读 - 下篇
本期 Meetup 活动由极限科技搜索引擎研发负责人 张磊老师 为大家带来了主题为《Elasticsearch 的代码结构和写入查询流程的解读 - 下篇》精彩分享。
张磊老师首先对上期的 ES 源码结构、写入流程等内容进行了简单的回顾,然后着重深入讲解了 ES 的查询搜索流程,从客户端发送搜索请求->协调节点解析请求->分片路由->分片查询->结果合并等,同时结合 ES 源代码进行 Debug 演示,通过 Debug 断点调试详细的为大家展示了 ES 方法调用级别的查询执行流程。以下为摘取分享内容部分截图:
同时,在整个直播过程中,主持人进行了多轮激动人心的抽奖活动,为参会小伙伴带来了额外的惊喜,将活动气氛推向了高潮。
本期 Meetup 旨在为 ES 初学者和有经验的用户提供深入见解,随着活动的圆满结束,参会小伙伴们不仅收获和提升在 ES 使用和开发方面的能力,还共同推动了技术的进步和社区的发展。
最后感谢大家的参与和支持,让我们共同期待下一次 搜索客 Meetup 活动带来更多的精彩内容!
本期 Meetup 的 PPT 下载
本期 PPT 下载的链接:https://searchkit.cn/slides/327
本期 Meetup 视频回放
扫码关注极限实验室视频号查看直播回放,或者扫码关注极限实验室 B 站 账号,可查看本期 Meetup 活动视频。我们也会在视频号、B 站持续更新最新技术视频,欢迎通过点赞、投币,收藏,三连来支持我们。
Meetup 活动讲师招募
搜索客社区 Meetup 的成功举办,离不开社区小伙伴的热情参与。目前社区讲师招募计划也在持续进行中,我们诚挚邀请各位技术大咖、行业精英踊跃提交演讲议题,与大家分享您的经验。
讲师报名链接:http://cfp.searchkit.cn
或扫描下方二维码,立刻报名成为讲师!
Meetup 活动聚焦 AI 与搜索领域的最新动态,以及数据实时搜索分析、向量检索、技术实践与案例分析、日志分析、安全等领域的深度探讨。
我们热切期待您的精彩分享!
往期回顾
- 【第2期】2024 搜索客 Meetup | Elasticsearch 的代码结构和写入查询流程的解读 - 上篇
- 【第1期】2024 搜索客 Meetup | Easysearch 结合大模型实现 RAG
关于 搜索客(SearchKit)社区
搜索客社区由 Elasticsearch 中文社区进行全新的品牌升级,以新的 Slogan:“搜索人自己的社区” 为宣言。汇集搜索领域最新动态、精选干货文章、精华讨论、文档资料、翻译与版本发布等,为广大搜索领域从业者提供更为丰富便捷的学习和交流平台。社区官网:https://searchkit.cn 。
关于极限科技(INFINI Labs)
极限科技,全称极限数据(北京)科技有限公司,是一家专注于实时搜索与数据分析的软件公司。旗下品牌极限实验室(INFINI Labs)致力于打造极致易用的数据探索与分析体验。
极限科技是一支年轻的团队,采用天然分布式的方式来进行远程协作,员工分布在全球各地,希望通过努力成为中国乃至全球企业大数据实时搜索分析产品的首选,为中国技术品牌输出添砖加瓦。
2024 年 8 月 28 日,由搜索客社区和极限科技(INFINI Labs)联合举办的第 3 期线上 Meetup 技术交流直播活动圆满结束。本期 Meetup 直播活动吸引了超过 700+ 人次的技术爱好者参与,共同学习和交流了 Elasticsearch 源码结构、写入和查询流程等。
主题:Elasticsearch 的代码结构和写入查询流程的解读 - 下篇
本期 Meetup 活动由极限科技搜索引擎研发负责人 张磊老师 为大家带来了主题为《Elasticsearch 的代码结构和写入查询流程的解读 - 下篇》精彩分享。
张磊老师首先对上期的 ES 源码结构、写入流程等内容进行了简单的回顾,然后着重深入讲解了 ES 的查询搜索流程,从客户端发送搜索请求->协调节点解析请求->分片路由->分片查询->结果合并等,同时结合 ES 源代码进行 Debug 演示,通过 Debug 断点调试详细的为大家展示了 ES 方法调用级别的查询执行流程。以下为摘取分享内容部分截图:
同时,在整个直播过程中,主持人进行了多轮激动人心的抽奖活动,为参会小伙伴带来了额外的惊喜,将活动气氛推向了高潮。
本期 Meetup 旨在为 ES 初学者和有经验的用户提供深入见解,随着活动的圆满结束,参会小伙伴们不仅收获和提升在 ES 使用和开发方面的能力,还共同推动了技术的进步和社区的发展。
最后感谢大家的参与和支持,让我们共同期待下一次 搜索客 Meetup 活动带来更多的精彩内容!
本期 Meetup 的 PPT 下载
本期 PPT 下载的链接:https://searchkit.cn/slides/327
本期 Meetup 视频回放
扫码关注极限实验室视频号查看直播回放,或者扫码关注极限实验室 B 站 账号,可查看本期 Meetup 活动视频。我们也会在视频号、B 站持续更新最新技术视频,欢迎通过点赞、投币,收藏,三连来支持我们。
Meetup 活动讲师招募
搜索客社区 Meetup 的成功举办,离不开社区小伙伴的热情参与。目前社区讲师招募计划也在持续进行中,我们诚挚邀请各位技术大咖、行业精英踊跃提交演讲议题,与大家分享您的经验。
讲师报名链接:http://cfp.searchkit.cn
或扫描下方二维码,立刻报名成为讲师!
Meetup 活动聚焦 AI 与搜索领域的最新动态,以及数据实时搜索分析、向量检索、技术实践与案例分析、日志分析、安全等领域的深度探讨。
我们热切期待您的精彩分享!
往期回顾
- 【第2期】2024 搜索客 Meetup | Elasticsearch 的代码结构和写入查询流程的解读 - 上篇
- 【第1期】2024 搜索客 Meetup | Easysearch 结合大模型实现 RAG
关于 搜索客(SearchKit)社区
搜索客社区由 Elasticsearch 中文社区进行全新的品牌升级,以新的 Slogan:“搜索人自己的社区” 为宣言。汇集搜索领域最新动态、精选干货文章、精华讨论、文档资料、翻译与版本发布等,为广大搜索领域从业者提供更为丰富便捷的学习和交流平台。社区官网:https://searchkit.cn 。
关于极限科技(INFINI Labs)
极限科技,全称极限数据(北京)科技有限公司,是一家专注于实时搜索与数据分析的软件公司。旗下品牌极限实验室(INFINI Labs)致力于打造极致易用的数据探索与分析体验。
极限科技是一支年轻的团队,采用天然分布式的方式来进行远程协作,员工分布在全球各地,希望通过努力成为中国乃至全球企业大数据实时搜索分析产品的首选,为中国技术品牌输出添砖加瓦。
收起阅读 »【搜索客社区日报】第1890期 (2024-08-29)
https://mp.weixin.qq.com/s/p-muCZMhXjJ9XQgKxxYiqg
2.iLogtail 开源两周年:感恩遇见,畅想未来
https://mp.weixin.qq.com/s/RoFjoYlPLG1yOzDGc7vqIQ
3.讲真,OpenObserve 挺好用的!
https://mp.weixin.qq.com/s/pNliVYhA9-aYaxubPJ9FMg
4.B站监控2.0架构落地实践
https://mp.weixin.qq.com/s/dWH4csu4B2c5SaRj3Mmtew
编辑:Se7en
更多资讯:http://news.searchkit.cn
https://mp.weixin.qq.com/s/p-muCZMhXjJ9XQgKxxYiqg
2.iLogtail 开源两周年:感恩遇见,畅想未来
https://mp.weixin.qq.com/s/RoFjoYlPLG1yOzDGc7vqIQ
3.讲真,OpenObserve 挺好用的!
https://mp.weixin.qq.com/s/pNliVYhA9-aYaxubPJ9FMg
4.B站监控2.0架构落地实践
https://mp.weixin.qq.com/s/dWH4csu4B2c5SaRj3Mmtew
编辑:Se7en
更多资讯:http://news.searchkit.cn 收起阅读 »
基于 INFINI Pizza 为 Hugo 静态站点添加搜索功能
INFINI Pizza 是 INFINI Labs 即将发布的一个基于 Rust 编写的搜索引擎(即将完全开源),目前已经完成基本的搜索能力,并且基于 INFINI Pizza 的核心引擎,提供了一个 WASM 版本的超轻量级内核,可以很方便的嵌入到各类应用系统,比如网站,尤其是静态站点或者小型的博客系统等。
目前 Pizza 和 INFINI Labs 官网已经集成了 INFINI Pizza for WebAssembly,具体的搜索效果如下图:
打开上面的网站(https://infinilabs.cn),通过按下快捷 s
即可调出搜索框,然后就可以体验到 INFINI Pizza 提供的搜索能力。值得特别提出的是,在搜索的过程你所有的操作都是在浏览器本地执行,也就是不会像传统的搜索实现方式那样,需要每次输入一个查询条件都会和后端的搜索服务器进行一次交互,相比之下, INFINI Pizza for WebAssembly 则是完全离线操作,即使断网,也能愉快的搜索。
废话不多说,接下来为大家介绍一下如何在你自己的站点来使用 INFINI Pizza for WebAssembly。
首先,INFINI Pizza for WebAssembly 是开源的,Github 地址在这里:https://github.com/infinilabs/pizza-wasm 编译好的 WASM 包在这里可以直接下载:https://github.com/infinilabs/pizza-wasm/tree/main/pkg
➜ wasm git:(main) ✗ du -sh pkg/*
4.0K pkg/README.md
4.0K pkg/package.json
4.0K pkg/pizza_wasm.d.ts
4.0K pkg/pizza_wasm.js
12K pkg/pizza_wasm_bg.js
580K pkg/pizza_wasm_bg.wasm
4.0K pkg/pizza_wasm_bg.wasm.d.ts
256K pkg/pizza_wasm_bg.wasm.gz
可以看到,WASM 的包只有 500 多 KB,通过 Gzip 压缩之后,只有 200 多 KB,比较轻量级。
Pizza-WASM 是 INFINI Pizza 核心引擎的 WebAssembly 接口封装,只对外暴露了几个简单的访问接口,对于目前的前端搜索应用足够了,在 https://github.com/infinilabs/pizza-wasm/tree/main/web 里面有一个非常简单的 WASM 方法调用的例子,可以简单进行了解。
当然,只是有 Pizza 的 WASM 还是不够的,我们如果要在现有的静态站点上添加搜索框的,还需要考虑数据怎么来,结果如何展现,所以针对这个场景,我们封装好了一个 Pizza-DocSearch 的一个项目,可以直接进一步简化使用,项目也是开源的,Github 地址是:https://github.com/infinilabs/pizza-docsearch
由于示例项目里面默认已经将编译好的代码和样例上传了,我们直接下载这个源代码并本地进行功能预览:
➜ /tmp git clone https://github.com/infinilabs/pizza-docsearch.git
Cloning into 'pizza-docsearch'...
remote: Enumerating objects: 174, done.
remote: Counting objects: 100% (174/174), done.
remote: Compressing objects: 100% (112/112), done.
remote: Total 174 (delta 86), reused 147 (delta 59), pack-reused 0 (from 0)
Receiving objects: 100% (174/174), 941.94 KiB | 1.20 MiB/s, done.
Resolving deltas: 100% (86/86), done.
➜ /tmp cd pizza-docsearch/example/dist
➜ dist git:(main) python3 -m http.server 8083
Serving HTTP on :: port 8083 (http://[::]:8083/) ...
打开浏览器,并访问:http://localhost:8083,如下:
观察浏览器的网络请求,可以看到会加载示例的 index.json 数据:
实际的情况,如果是我们自己的静态网站或者是博客,只有保证网站根目录有这个文件及相应的格式,即可快速将这个你看到的搜索功能集成到你自己的网站上去。OK,功能验证完毕了,我们开始集成到我们的站点吧。
Pizza/INFINI Labs 的官网,使用的 Hugo 来静态生成的,index.json 文件不需要手动生成,首先我们需要让 Hugo 生成 JSON 格式的内容,这个是 Hugo 自带的能力,我们需要修改 Hugo 项目的配置:
将 outputs 参数这里新增一个 JSON 的输出,然后我们在主题的模版里面再定义一下 JSON 输出的格式模版:
文本格式的内容如下,方便复制粘贴,保存文件名为 index.json
:
{{- $index := slice -}}
{{- range where .Site.RegularPages.ByDate.Reverse "Type" "not in" (slice "page" "json") -}}
{{- $index = $index | append (dict "title" (.Title | plainify) "url" .Permalink "tags" .Params.tags "category" .Params.category "subcategory" .Params.subcategory "summary" (.Params.Summary | markdownify | plainify) "content" (.Content | markdownify | plainify)) -}}
{{- end -}}
{{- $index | jsonify -}}
OK,接下来就是将站点内每篇文章或者博客的元数据里面加上我们上面已经用到了的标签:
OK, 启动 Hugo 站点:
| EN
-------------------+------
Pages | 181
Paginator pages | 5
Non-page files | 0
Static files | 110
Processed images | 0
Aliases | 52
Sitemaps | 1
Cleaned | 0
Built in 323 ms
Watching for changes in /Users/medcl/Documents/rust/pizza/website/{assets,content.en,static,themes}
Watching for config changes in /Users/medcl/Documents/rust/pizza/website/config.yaml
Environment: "development"
Serving pages from memory
Running in Fast Render Mode. For full rebuilds on change: hugo server --disableFastRender
Web Server is available at //localhost:1313/ (bind address 127.0.0.1)
Press Ctrl+C to stop
打开 Hugo 的站点地址,并尝试访问 http://localhost:1313/index.json
, 应该就可以访问到这个 JSON 文件了:
至此,数据准备完毕,接下来我们集成前端搜索控件。
还记得我们之前从 Pizza-docsearch 下载的资源文件么,我们主要用到 assets
里面的 3 个文件:
/tmp/pizza-docsearch/example/dist
➜ dist git:(main) tree
.
├── assets
├── index-C1z1vz3D.css
├── index-D_gOo737.js
└── pizza_wasm_bg-BRCuviY_.wasm
├── index.html
└── index.json
1 directory, 5 files
➜ dist git:(main)
打开 index.html 文件,我们可以看到里面的内容如下:
拷贝这个 assets 目录文件到我们的 Hugo 站点,位置如下:
然后修改 Hugo 的主题模版,在所有页面的头模版 html-head.html
里面增加一段代码来加载我们的 CSS 样式文件:
然后继续修改 Hugo 的主题模版文件,在所有页面的页脚模版,增加一段代码来加载 JS 脚本文件:
然后,在页面模版的适当位置,插入一下 Docsearch 的一段标签,用于放置搜索框,如图:
至此,大功告成!
打开浏览器即可看到最终效果:
最后,总结一下,借助 INFINI Pizza Docsearch 的 3 个小文件,只需 3 行代码,你可以在 5 分钟内为你的静态站点添加一个轻量级的离线搜索功能,快去试试吧。
相关链接:
交流群
📢 对 Pizza,Rust,Wasm 搜索引擎感兴趣的朋友可以加这个群~👇,如果加不进群可微信添加小助手(INFINI-labs)拉您入群。
关于极限科技(INFINI Labs)
极限科技,全称极限数据(北京)科技有限公司,是一家专注于实时搜索与数据分析的软件公司。旗下品牌极限实验室(INFINI Labs)致力于打造极致易用的数据探索与分析体验。
极限科技是一支年轻的团队,采用天然分布式的方式来进行远程协作,员工分布在全球各地,希望通过努力成为中国乃至全球企业大数据实时搜索分析产品的首选,为中国技术品牌输出添砖加瓦。
INFINI Pizza 是 INFINI Labs 即将发布的一个基于 Rust 编写的搜索引擎(即将完全开源),目前已经完成基本的搜索能力,并且基于 INFINI Pizza 的核心引擎,提供了一个 WASM 版本的超轻量级内核,可以很方便的嵌入到各类应用系统,比如网站,尤其是静态站点或者小型的博客系统等。
目前 Pizza 和 INFINI Labs 官网已经集成了 INFINI Pizza for WebAssembly,具体的搜索效果如下图:
打开上面的网站(https://infinilabs.cn),通过按下快捷 s
即可调出搜索框,然后就可以体验到 INFINI Pizza 提供的搜索能力。值得特别提出的是,在搜索的过程你所有的操作都是在浏览器本地执行,也就是不会像传统的搜索实现方式那样,需要每次输入一个查询条件都会和后端的搜索服务器进行一次交互,相比之下, INFINI Pizza for WebAssembly 则是完全离线操作,即使断网,也能愉快的搜索。
废话不多说,接下来为大家介绍一下如何在你自己的站点来使用 INFINI Pizza for WebAssembly。
首先,INFINI Pizza for WebAssembly 是开源的,Github 地址在这里:https://github.com/infinilabs/pizza-wasm 编译好的 WASM 包在这里可以直接下载:https://github.com/infinilabs/pizza-wasm/tree/main/pkg
➜ wasm git:(main) ✗ du -sh pkg/*
4.0K pkg/README.md
4.0K pkg/package.json
4.0K pkg/pizza_wasm.d.ts
4.0K pkg/pizza_wasm.js
12K pkg/pizza_wasm_bg.js
580K pkg/pizza_wasm_bg.wasm
4.0K pkg/pizza_wasm_bg.wasm.d.ts
256K pkg/pizza_wasm_bg.wasm.gz
可以看到,WASM 的包只有 500 多 KB,通过 Gzip 压缩之后,只有 200 多 KB,比较轻量级。
Pizza-WASM 是 INFINI Pizza 核心引擎的 WebAssembly 接口封装,只对外暴露了几个简单的访问接口,对于目前的前端搜索应用足够了,在 https://github.com/infinilabs/pizza-wasm/tree/main/web 里面有一个非常简单的 WASM 方法调用的例子,可以简单进行了解。
当然,只是有 Pizza 的 WASM 还是不够的,我们如果要在现有的静态站点上添加搜索框的,还需要考虑数据怎么来,结果如何展现,所以针对这个场景,我们封装好了一个 Pizza-DocSearch 的一个项目,可以直接进一步简化使用,项目也是开源的,Github 地址是:https://github.com/infinilabs/pizza-docsearch
由于示例项目里面默认已经将编译好的代码和样例上传了,我们直接下载这个源代码并本地进行功能预览:
➜ /tmp git clone https://github.com/infinilabs/pizza-docsearch.git
Cloning into 'pizza-docsearch'...
remote: Enumerating objects: 174, done.
remote: Counting objects: 100% (174/174), done.
remote: Compressing objects: 100% (112/112), done.
remote: Total 174 (delta 86), reused 147 (delta 59), pack-reused 0 (from 0)
Receiving objects: 100% (174/174), 941.94 KiB | 1.20 MiB/s, done.
Resolving deltas: 100% (86/86), done.
➜ /tmp cd pizza-docsearch/example/dist
➜ dist git:(main) python3 -m http.server 8083
Serving HTTP on :: port 8083 (http://[::]:8083/) ...
打开浏览器,并访问:http://localhost:8083,如下:
观察浏览器的网络请求,可以看到会加载示例的 index.json 数据:
实际的情况,如果是我们自己的静态网站或者是博客,只有保证网站根目录有这个文件及相应的格式,即可快速将这个你看到的搜索功能集成到你自己的网站上去。OK,功能验证完毕了,我们开始集成到我们的站点吧。
Pizza/INFINI Labs 的官网,使用的 Hugo 来静态生成的,index.json 文件不需要手动生成,首先我们需要让 Hugo 生成 JSON 格式的内容,这个是 Hugo 自带的能力,我们需要修改 Hugo 项目的配置:
将 outputs 参数这里新增一个 JSON 的输出,然后我们在主题的模版里面再定义一下 JSON 输出的格式模版:
文本格式的内容如下,方便复制粘贴,保存文件名为 index.json
:
{{- $index := slice -}}
{{- range where .Site.RegularPages.ByDate.Reverse "Type" "not in" (slice "page" "json") -}}
{{- $index = $index | append (dict "title" (.Title | plainify) "url" .Permalink "tags" .Params.tags "category" .Params.category "subcategory" .Params.subcategory "summary" (.Params.Summary | markdownify | plainify) "content" (.Content | markdownify | plainify)) -}}
{{- end -}}
{{- $index | jsonify -}}
OK,接下来就是将站点内每篇文章或者博客的元数据里面加上我们上面已经用到了的标签:
OK, 启动 Hugo 站点:
| EN
-------------------+------
Pages | 181
Paginator pages | 5
Non-page files | 0
Static files | 110
Processed images | 0
Aliases | 52
Sitemaps | 1
Cleaned | 0
Built in 323 ms
Watching for changes in /Users/medcl/Documents/rust/pizza/website/{assets,content.en,static,themes}
Watching for config changes in /Users/medcl/Documents/rust/pizza/website/config.yaml
Environment: "development"
Serving pages from memory
Running in Fast Render Mode. For full rebuilds on change: hugo server --disableFastRender
Web Server is available at //localhost:1313/ (bind address 127.0.0.1)
Press Ctrl+C to stop
打开 Hugo 的站点地址,并尝试访问 http://localhost:1313/index.json
, 应该就可以访问到这个 JSON 文件了:
至此,数据准备完毕,接下来我们集成前端搜索控件。
还记得我们之前从 Pizza-docsearch 下载的资源文件么,我们主要用到 assets
里面的 3 个文件:
/tmp/pizza-docsearch/example/dist
➜ dist git:(main) tree
.
├── assets
├── index-C1z1vz3D.css
├── index-D_gOo737.js
└── pizza_wasm_bg-BRCuviY_.wasm
├── index.html
└── index.json
1 directory, 5 files
➜ dist git:(main)
打开 index.html 文件,我们可以看到里面的内容如下:
拷贝这个 assets 目录文件到我们的 Hugo 站点,位置如下:
然后修改 Hugo 的主题模版,在所有页面的头模版 html-head.html
里面增加一段代码来加载我们的 CSS 样式文件:
然后继续修改 Hugo 的主题模版文件,在所有页面的页脚模版,增加一段代码来加载 JS 脚本文件:
然后,在页面模版的适当位置,插入一下 Docsearch 的一段标签,用于放置搜索框,如图:
至此,大功告成!
打开浏览器即可看到最终效果:
最后,总结一下,借助 INFINI Pizza Docsearch 的 3 个小文件,只需 3 行代码,你可以在 5 分钟内为你的静态站点添加一个轻量级的离线搜索功能,快去试试吧。
相关链接:
交流群
📢 对 Pizza,Rust,Wasm 搜索引擎感兴趣的朋友可以加这个群~👇,如果加不进群可微信添加小助手(INFINI-labs)拉您入群。
关于极限科技(INFINI Labs)
极限科技,全称极限数据(北京)科技有限公司,是一家专注于实时搜索与数据分析的软件公司。旗下品牌极限实验室(INFINI Labs)致力于打造极致易用的数据探索与分析体验。
极限科技是一支年轻的团队,采用天然分布式的方式来进行远程协作,员工分布在全球各地,希望通过努力成为中国乃至全球企业大数据实时搜索分析产品的首选,为中国技术品牌输出添砖加瓦。
收起阅读 »【搜索客社区日报】第1888期 (2024-08-27)
https://mohamedsaidani34.medium.com/
2. 5分钟教会你拿filebeats发送nginx日志(需要梯子)
https://medium.com/elastictalk ... ea193
3. 聊聊elasticalert通知?(需要梯子)
https://medium.com/%40musabdog ... 32598
编辑:斯蒂文
更多资讯:http://news.searchkit.cn
https://mohamedsaidani34.medium.com/
2. 5分钟教会你拿filebeats发送nginx日志(需要梯子)
https://medium.com/elastictalk ... ea193
3. 聊聊elasticalert通知?(需要梯子)
https://medium.com/%40musabdog ... 32598
编辑:斯蒂文
更多资讯:http://news.searchkit.cn 收起阅读 »
【搜索客社区日报】 第1889期 (2024-08-28)
https://medium.com/%40jeevansa ... 67140
2.减少 95% 资源的向量搜索 | 使用云搜索的 DiskANN
https://mp.weixin.qq.com/s/ddAv8X4qHKgfgpBkavLCPA
3.使用 Elasticsearch 来RAG检索非英语文本。(搭梯)
https://medium.com/%40thongpra ... ff0cd
编辑:kin122
更多资讯:http://news.searchkit.cn
https://medium.com/%40jeevansa ... 67140
2.减少 95% 资源的向量搜索 | 使用云搜索的 DiskANN
https://mp.weixin.qq.com/s/ddAv8X4qHKgfgpBkavLCPA
3.使用 Elasticsearch 来RAG检索非英语文本。(搭梯)
https://medium.com/%40thongpra ... ff0cd
编辑:kin122
更多资讯:http://news.searchkit.cn 收起阅读 »
【搜索客社区日报】第1887期 (2024-08-26)
https://blog.csdn.net/xiaobing ... 97406
2、揭秘谷歌搜索排名的工作原理,深入理解搜索引擎的整体架构仍然至关重要。
https://www.infoq.cn/article/UNmjGDyGK5XBLIAEt7Ui
3、零基础5分钟上手亚马逊云科技核心云架构知识-创建NoSQL数据库
https://blog.csdn.net/m0_66628 ... 46634
4、【AI 大模型】使用 AI 大模型 编程 ② ( CodeGeeX 工具 | CodeGeeX 功能 | VSCode 安装使用 CodeGeeX | Tabby 工具 | Tabby 部署与使用 )
https://blog.csdn.net/shuliang ... 37850
5、【人工智能】Python融合机器学习、深度学习和微服务的创新之路
https://blog.csdn.net/2302_802 ... 25190
编辑:Muse
更多资讯:http://news.searchkit.cn
https://blog.csdn.net/xiaobing ... 97406
2、揭秘谷歌搜索排名的工作原理,深入理解搜索引擎的整体架构仍然至关重要。
https://www.infoq.cn/article/UNmjGDyGK5XBLIAEt7Ui
3、零基础5分钟上手亚马逊云科技核心云架构知识-创建NoSQL数据库
https://blog.csdn.net/m0_66628 ... 46634
4、【AI 大模型】使用 AI 大模型 编程 ② ( CodeGeeX 工具 | CodeGeeX 功能 | VSCode 安装使用 CodeGeeX | Tabby 工具 | Tabby 部署与使用 )
https://blog.csdn.net/shuliang ... 37850
5、【人工智能】Python融合机器学习、深度学习和微服务的创新之路
https://blog.csdn.net/2302_802 ... 25190
编辑:Muse
更多资讯:http://news.searchkit.cn 收起阅读 »
Easysearch 性能测试方法概要
INFINI Easysearch
INFINI Easysearch 是一个分布式的近实时搜索与分析引擎,核心引擎基于开源的 Apache Lucene。Easysearch 衍生自基于开源协议 Apache 2.0 的 Elasticsearch 7.10 版本,完善和支持更多的企业级功能,优化搜索业务场景,以保证更佳的数据探索与分析体验。
Easysearch 的主要特点:
- 兼容 Elasticsearch,业务代码无需改动;可平滑迁移
- 企业级安全;更稳定可靠
- 企业级管理后台(多集群统一管理,实现运营标准化、自动化)
- 信创适配(全面适配国产 CPU/OS/服务器,支持国密算法)
Easysearch 快速体验,请参阅:
Loadgen
Loadgen 是 Elasticsearch 专属压测工具,用来对 Easysearch 或者网关进行压力测试。
Loadgen 的特点:
- 性能强劲
- 轻量级无依赖
- 支持模板化参数随机
- 支持高并发
- 支持压测端均衡流量控制
- 支持服务端返回值校验
当前最新版本为 1.26.1-598,下载链接如下:
https://release.infinilabs.com/loadgen/stable/
下载并解压安装包后,得到二进制文件。
查看版本信息。
$ ./loadgen-linux-amd64 -v
__ ___ _ ___ ___ __ __
/ / /___\/_\ / \/ _ \ /__\/\ \ \
/ / // ///_\\ / /\ / /_\//_\ / \/ /
/ /__/ \_// _ \/ /_// /_\\//__/ /\ /
\____|___/\_/ \_/___,'\____/\__/\_\ \/
[LOADGEN] A http load generator and testing suite.
[LOADGEN] 1.26.1#598, 2024-08-14 04:50:03, 2024-12-31 10:10:10, 00f15fd86834d7ea539f6d66ee608e3915eef0e3
loadgen 1.26.1 598 2024-08-14 04:50:03 +0000 UTC 2024-12-31 10:10:10 +0000 UTC 00f15fd86834d7ea539f6d66ee608e3915eef0e3
Loadgen 测试
Loadgen 使用非常简单,下面演示如何进行查询压测。
- 建立索引,根据节点数调节分片数。
curl -X PUT -H "Content-Type: application/json" \
-ku admin:xxx "https://localhost:9200/loadtest" -d'
{
"settings":{
"number_of_shards":"3",
"number_of_replicas":1,
"translog":{
"durability":"async"
}
}
}'
{"acknowledged":true,"shards_acknowledged":true,"index":"loadtest"}
- 创建
loadgen.dsl.shawnyan
配置文件,定义查询
GET loadtest/_search
{"query": {"term": {"id.keyword": {"value": $[[id]]}}}}
- 执行压测,
-d
表示秒数,-c
表示并发数。
$ ES_ENDPOINT=https://localhost:9200 ES_USERNAME=admin ES_PASSWORD=xxx ./loadgen-linux-amd64 -run loadgen.dsl.shawnyan -d 10 -c 2
__ ___ _ ___ ___ __ __
/ / /___\/_\ / \/ _ \ /__\/\ \ \
/ / // ///_\\ / /\ / /_\//_\ / \/ /
/ /__/ \_// _ \/ /_// /_\\//__/ /\ /
\____|___/\_/ \_/___,'\____/\__/\_\ \/
[LOADGEN] A http load generator and testing suite.
[LOADGEN] 1.26.1#598, 2024-08-14 04:50:03, 2024-12-31 10:10:10, 00f15fd86834d7ea539f6d66ee608e3915eef0e3
[08-19 16:43:27] [INF] [env.go:179] configuration auto reload enabled
[08-19 16:43:27] [INF] [app.go:285] initializing loadgen, pid: 30792
[08-19 16:43:27] [INF] [app.go:286] using config: /data/es/loadgen.yml
[08-19 16:43:27] [INF] [module.go:155] started plugin: statsd
[08-19 16:43:27] [INF] [module.go:161] all modules are started
[08-19 16:43:27] [INF] [instance.go:78] workspace: /data/es/data/loadgen/nodes/cr1gabqr90cng685o2s0
[08-19 16:43:27] [INF] [app.go:511] loadgen is up and running now.
[08-19 16:43:27] [INF] [main.go:403] loading config: /data/es/loadgen.dsl.shawnyan
21108 requests finished in 9.79061677s, 1.08MB sent, 3.22MB received
[Loadgen Client Metrics]
Requests/sec: 2110.63
Request Traffic/sec: 110.22KB
Total Transfer/sec: 440.00KB
Fastest Request: 680.198µs
Slowest Request: 12.409574ms
Status 200: 21108
[Latency Metrics]
10000 samples of 21108 events
Cumulative: 8.732205871s
HMean: 851.869µs
Avg.: 873.22µs
p50: 839.498µs
p75: 914.298µs
p95: 1.059197ms
p99: 1.327098ms
p999: 4.83579ms
Long 5%: 1.394411ms
Short 5%: 724.226µs
Max: 11.618475ms
Min: 680.198µs
Range: 10.938277ms
StdDev: 289.216µs
Rate/sec.: 2110.63
[Latency Distribution]
680µs - 1.774ms ------------------------------
1.774ms - 2.867ms -
2.867ms - 3.961ms -
3.961ms - 5.055ms -
5.055ms - 6.149ms -
6.149ms - 7.243ms -
7.243ms - 8.336ms -
8.336ms - 9.43ms -
9.43ms - 10.524ms -
10.524ms - 11.618ms -
[Estimated Server Metrics]
Requests/sec: 2155.94
Avg Req Time: 927.668µs
Transfer/sec: 449.45KB
更多内容请参阅文档:
https://infinilabs.cn/docs/latest/gateway/getting-started/benchmark/
Rally
如果对 Elasticsearch 熟悉的同学,也可尝试使用 Rally 对 Easysearch 进行测试。
Rally 是 Elasticsearch 的基准测试框架。它可以帮助您完成以下任务:
- 安装 Elasticsearch 集群以进行基准测试
- 跨 Elasticsearch 版本管理基准数据和规范
- 运行基准测试并记录结果
- 通过连接遥测设备来查找性能问题
- 比较性能结果
安装 Rally。
[root@easysearch /]# pip3 install esrally
Requirement already satisfied: esrally in /usr/local/lib/python3.9/site-packages (2.11.0)
Requirement already satisfied: py-cpuinfo==7.0.0 in /usr/local/lib/python3.9/site-packages (from esrally) (7.0.0)
Requirement already satisfied: elastic-transport==8.4.1 in /usr/local/lib/python3.9/site-packages (from esrally) (8.4.1)
Requirement already satisfied: google-resumable-media[requests]==1.1.0 in /usr/local/lib/python3.9/site-packages (from esrally) (1.1.0)
Requirement already satisfied: urllib3==1.26.18 in /usr/local/lib/python3.9/site-packages (from esrally) (1.26.18)
Requirement already satisfied: google-auth==1.22.1 in /usr/local/lib/python3.9/site-packages (from esrally) (1.22.1)
Requirement already satisfied: thespian==3.10.1 in /usr/local/lib/python3.9/site-packages (from esrally) (3.10.1)
Requirement already satisfied: jsonschema==3.1.1 in /usr/local/lib/python3.9/site-packages (from esrally) (3.1.1)
Requirement already satisfied: markupsafe==2.0.1 in /usr/local/lib64/python3.9/site-packages (from esrally) (2.0.1)
Requirement already satisfied: yappi==1.5.1 in /usr/local/lib64/python3.9/site-packages (from esrally) (1.5.1)
Requirement already satisfied: psutil==5.9.4 in /usr/local/lib64/python3.9/site-packages (from esrally) (5.9.4)
Requirement already satisfied: certifi in /usr/local/lib/python3.9/site-packages (from esrally) (2024.7.4)
Requirement already satisfied: elasticsearch[async]==8.6.1 in /usr/local/lib/python3.9/site-packages (from esrally) (8.6.1)
Requirement already satisfied: ijson==2.6.1 in /usr/local/lib/python3.9/site-packages (from esrally) (2.6.1)
Requirement already satisfied: jinja2==3.1.4 in /usr/local/lib/python3.9/site-packages (from esrally) (3.1.4)
Requirement already satisfied: requests<2.32.0 in /usr/local/lib/python3.9/site-packages (from esrally) (2.31.0)
Requirement already satisfied: tabulate==0.8.9 in /usr/local/lib/python3.9/site-packages (from esrally) (0.8.9)
Requirement already satisfied: zstandard==0.21.0 in /usr/local/lib64/python3.9/site-packages (from esrally) (0.21.0)
Requirement already satisfied: docker==6.0.0 in /usr/local/lib/python3.9/site-packages (from esrally) (6.0.0)
Requirement already satisfied: websocket-client>=0.32.0 in /usr/local/lib/python3.9/site-packages (from docker==6.0.0->esrally) (1.8.0)
Requirement already satisfied: packaging>=14.0 in /usr/lib/python3.9/site-packages (from docker==6.0.0->esrally) (20.9)
Requirement already satisfied: aiohttp<4,>=3 in /usr/local/lib64/python3.9/site-packages (from elasticsearch[async]==8.6.1->esrally) (3.10.4)
Requirement already satisfied: pyasn1-modules>=0.2.1 in /usr/local/lib/python3.9/site-packages (from google-auth==1.22.1->esrally) (0.4.0)
Requirement already satisfied: six>=1.9.0 in /usr/lib/python3.9/site-packages (from google-auth==1.22.1->esrally) (1.15.0)
Requirement already satisfied: rsa<5,>=3.1.4 in /usr/local/lib/python3.9/site-packages (from google-auth==1.22.1->esrally) (4.9)
Requirement already satisfied: setuptools>=40.3.0 in /usr/lib/python3.9/site-packages (from google-auth==1.22.1->esrally) (53.0.0)
Requirement already satisfied: cachetools<5.0,>=2.0.0 in /usr/local/lib/python3.9/site-packages (from google-auth==1.22.1->esrally) (4.2.4)
Requirement already satisfied: google-crc32c<2.0dev,>=1.0 in /usr/local/lib64/python3.9/site-packages (from google-resumable-media[requests]==1.1.0->esrally) (1.5.0)
Requirement already satisfied: attrs>=17.4.0 in /usr/local/lib/python3.9/site-packages (from jsonschema==3.1.1->esrally) (24.2.0)
Requirement already satisfied: importlib-metadata in /usr/local/lib/python3.9/site-packages (from jsonschema==3.1.1->esrally) (8.2.0)
Requirement already satisfied: pyrsistent>=0.14.0 in /usr/local/lib64/python3.9/site-packages (from jsonschema==3.1.1->esrally) (0.20.0)
Requirement already satisfied: yarl<2.0,>=1.0 in /usr/local/lib64/python3.9/site-packages (from aiohttp<4,>=3->elasticsearch[async]==8.6.1->esrally) (1.9.4)
Requirement already satisfied: frozenlist>=1.1.1 in /usr/local/lib64/python3.9/site-packages (from aiohttp<4,>=3->elasticsearch[async]==8.6.1->esrally) (1.4.1)
Requirement already satisfied: aiosignal>=1.1.2 in /usr/local/lib/python3.9/site-packages (from aiohttp<4,>=3->elasticsearch[async]==8.6.1->esrally) (1.3.1)
Requirement already satisfied: async-timeout<5.0,>=4.0 in /usr/local/lib/python3.9/site-packages (from aiohttp<4,>=3->elasticsearch[async]==8.6.1->esrally) (4.0.3)
Requirement already satisfied: aiohappyeyeballs>=2.3.0 in /usr/local/lib/python3.9/site-packages (from aiohttp<4,>=3->elasticsearch[async]==8.6.1->esrally) (2.3.7)
Requirement already satisfied: multidict<7.0,>=4.5 in /usr/local/lib64/python3.9/site-packages (from aiohttp<4,>=3->elasticsearch[async]==8.6.1->esrally) (6.0.5)
Requirement already satisfied: pyparsing>=2.0.2 in /usr/lib/python3.9/site-packages (from packaging>=14.0->docker==6.0.0->esrally) (2.4.7)
Requirement already satisfied: pyasn1<0.7.0,>=0.4.6 in /usr/local/lib/python3.9/site-packages (from pyasn1-modules>=0.2.1->google-auth==1.22.1->esrally) (0.6.0)
Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.9/site-packages (from requests<2.32.0->esrally) (3.7)
Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib64/python3.9/site-packages (from requests<2.32.0->esrally) (3.3.2)
Requirement already satisfied: zipp>=0.5 in /usr/local/lib/python3.9/site-packages (from importlib-metadata->jsonschema==3.1.1->esrally) (3.20.0)
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
[root@easysearch /]# esrally --version
esrally 2.11.0
[root@easysearch /]#
关于 Rally 的更多内容,请参阅官方文档:
https://esrally.readthedocs.io/en/stable/
作者:少安事务所
原文:https://mp.weixin.qq.com/s/9eEH38kgsw4i150CJqyxvQ
INFINI Easysearch
INFINI Easysearch 是一个分布式的近实时搜索与分析引擎,核心引擎基于开源的 Apache Lucene。Easysearch 衍生自基于开源协议 Apache 2.0 的 Elasticsearch 7.10 版本,完善和支持更多的企业级功能,优化搜索业务场景,以保证更佳的数据探索与分析体验。
Easysearch 的主要特点:
- 兼容 Elasticsearch,业务代码无需改动;可平滑迁移
- 企业级安全;更稳定可靠
- 企业级管理后台(多集群统一管理,实现运营标准化、自动化)
- 信创适配(全面适配国产 CPU/OS/服务器,支持国密算法)
Easysearch 快速体验,请参阅:
Loadgen
Loadgen 是 Elasticsearch 专属压测工具,用来对 Easysearch 或者网关进行压力测试。
Loadgen 的特点:
- 性能强劲
- 轻量级无依赖
- 支持模板化参数随机
- 支持高并发
- 支持压测端均衡流量控制
- 支持服务端返回值校验
当前最新版本为 1.26.1-598,下载链接如下:
https://release.infinilabs.com/loadgen/stable/
下载并解压安装包后,得到二进制文件。
查看版本信息。
$ ./loadgen-linux-amd64 -v
__ ___ _ ___ ___ __ __
/ / /___\/_\ / \/ _ \ /__\/\ \ \
/ / // ///_\\ / /\ / /_\//_\ / \/ /
/ /__/ \_// _ \/ /_// /_\\//__/ /\ /
\____|___/\_/ \_/___,'\____/\__/\_\ \/
[LOADGEN] A http load generator and testing suite.
[LOADGEN] 1.26.1#598, 2024-08-14 04:50:03, 2024-12-31 10:10:10, 00f15fd86834d7ea539f6d66ee608e3915eef0e3
loadgen 1.26.1 598 2024-08-14 04:50:03 +0000 UTC 2024-12-31 10:10:10 +0000 UTC 00f15fd86834d7ea539f6d66ee608e3915eef0e3
Loadgen 测试
Loadgen 使用非常简单,下面演示如何进行查询压测。
- 建立索引,根据节点数调节分片数。
curl -X PUT -H "Content-Type: application/json" \
-ku admin:xxx "https://localhost:9200/loadtest" -d'
{
"settings":{
"number_of_shards":"3",
"number_of_replicas":1,
"translog":{
"durability":"async"
}
}
}'
{"acknowledged":true,"shards_acknowledged":true,"index":"loadtest"}
- 创建
loadgen.dsl.shawnyan
配置文件,定义查询
GET loadtest/_search
{"query": {"term": {"id.keyword": {"value": $[[id]]}}}}
- 执行压测,
-d
表示秒数,-c
表示并发数。
$ ES_ENDPOINT=https://localhost:9200 ES_USERNAME=admin ES_PASSWORD=xxx ./loadgen-linux-amd64 -run loadgen.dsl.shawnyan -d 10 -c 2
__ ___ _ ___ ___ __ __
/ / /___\/_\ / \/ _ \ /__\/\ \ \
/ / // ///_\\ / /\ / /_\//_\ / \/ /
/ /__/ \_// _ \/ /_// /_\\//__/ /\ /
\____|___/\_/ \_/___,'\____/\__/\_\ \/
[LOADGEN] A http load generator and testing suite.
[LOADGEN] 1.26.1#598, 2024-08-14 04:50:03, 2024-12-31 10:10:10, 00f15fd86834d7ea539f6d66ee608e3915eef0e3
[08-19 16:43:27] [INF] [env.go:179] configuration auto reload enabled
[08-19 16:43:27] [INF] [app.go:285] initializing loadgen, pid: 30792
[08-19 16:43:27] [INF] [app.go:286] using config: /data/es/loadgen.yml
[08-19 16:43:27] [INF] [module.go:155] started plugin: statsd
[08-19 16:43:27] [INF] [module.go:161] all modules are started
[08-19 16:43:27] [INF] [instance.go:78] workspace: /data/es/data/loadgen/nodes/cr1gabqr90cng685o2s0
[08-19 16:43:27] [INF] [app.go:511] loadgen is up and running now.
[08-19 16:43:27] [INF] [main.go:403] loading config: /data/es/loadgen.dsl.shawnyan
21108 requests finished in 9.79061677s, 1.08MB sent, 3.22MB received
[Loadgen Client Metrics]
Requests/sec: 2110.63
Request Traffic/sec: 110.22KB
Total Transfer/sec: 440.00KB
Fastest Request: 680.198µs
Slowest Request: 12.409574ms
Status 200: 21108
[Latency Metrics]
10000 samples of 21108 events
Cumulative: 8.732205871s
HMean: 851.869µs
Avg.: 873.22µs
p50: 839.498µs
p75: 914.298µs
p95: 1.059197ms
p99: 1.327098ms
p999: 4.83579ms
Long 5%: 1.394411ms
Short 5%: 724.226µs
Max: 11.618475ms
Min: 680.198µs
Range: 10.938277ms
StdDev: 289.216µs
Rate/sec.: 2110.63
[Latency Distribution]
680µs - 1.774ms ------------------------------
1.774ms - 2.867ms -
2.867ms - 3.961ms -
3.961ms - 5.055ms -
5.055ms - 6.149ms -
6.149ms - 7.243ms -
7.243ms - 8.336ms -
8.336ms - 9.43ms -
9.43ms - 10.524ms -
10.524ms - 11.618ms -
[Estimated Server Metrics]
Requests/sec: 2155.94
Avg Req Time: 927.668µs
Transfer/sec: 449.45KB
更多内容请参阅文档:
https://infinilabs.cn/docs/latest/gateway/getting-started/benchmark/
Rally
如果对 Elasticsearch 熟悉的同学,也可尝试使用 Rally 对 Easysearch 进行测试。
Rally 是 Elasticsearch 的基准测试框架。它可以帮助您完成以下任务:
- 安装 Elasticsearch 集群以进行基准测试
- 跨 Elasticsearch 版本管理基准数据和规范
- 运行基准测试并记录结果
- 通过连接遥测设备来查找性能问题
- 比较性能结果
安装 Rally。
[root@easysearch /]# pip3 install esrally
Requirement already satisfied: esrally in /usr/local/lib/python3.9/site-packages (2.11.0)
Requirement already satisfied: py-cpuinfo==7.0.0 in /usr/local/lib/python3.9/site-packages (from esrally) (7.0.0)
Requirement already satisfied: elastic-transport==8.4.1 in /usr/local/lib/python3.9/site-packages (from esrally) (8.4.1)
Requirement already satisfied: google-resumable-media[requests]==1.1.0 in /usr/local/lib/python3.9/site-packages (from esrally) (1.1.0)
Requirement already satisfied: urllib3==1.26.18 in /usr/local/lib/python3.9/site-packages (from esrally) (1.26.18)
Requirement already satisfied: google-auth==1.22.1 in /usr/local/lib/python3.9/site-packages (from esrally) (1.22.1)
Requirement already satisfied: thespian==3.10.1 in /usr/local/lib/python3.9/site-packages (from esrally) (3.10.1)
Requirement already satisfied: jsonschema==3.1.1 in /usr/local/lib/python3.9/site-packages (from esrally) (3.1.1)
Requirement already satisfied: markupsafe==2.0.1 in /usr/local/lib64/python3.9/site-packages (from esrally) (2.0.1)
Requirement already satisfied: yappi==1.5.1 in /usr/local/lib64/python3.9/site-packages (from esrally) (1.5.1)
Requirement already satisfied: psutil==5.9.4 in /usr/local/lib64/python3.9/site-packages (from esrally) (5.9.4)
Requirement already satisfied: certifi in /usr/local/lib/python3.9/site-packages (from esrally) (2024.7.4)
Requirement already satisfied: elasticsearch[async]==8.6.1 in /usr/local/lib/python3.9/site-packages (from esrally) (8.6.1)
Requirement already satisfied: ijson==2.6.1 in /usr/local/lib/python3.9/site-packages (from esrally) (2.6.1)
Requirement already satisfied: jinja2==3.1.4 in /usr/local/lib/python3.9/site-packages (from esrally) (3.1.4)
Requirement already satisfied: requests<2.32.0 in /usr/local/lib/python3.9/site-packages (from esrally) (2.31.0)
Requirement already satisfied: tabulate==0.8.9 in /usr/local/lib/python3.9/site-packages (from esrally) (0.8.9)
Requirement already satisfied: zstandard==0.21.0 in /usr/local/lib64/python3.9/site-packages (from esrally) (0.21.0)
Requirement already satisfied: docker==6.0.0 in /usr/local/lib/python3.9/site-packages (from esrally) (6.0.0)
Requirement already satisfied: websocket-client>=0.32.0 in /usr/local/lib/python3.9/site-packages (from docker==6.0.0->esrally) (1.8.0)
Requirement already satisfied: packaging>=14.0 in /usr/lib/python3.9/site-packages (from docker==6.0.0->esrally) (20.9)
Requirement already satisfied: aiohttp<4,>=3 in /usr/local/lib64/python3.9/site-packages (from elasticsearch[async]==8.6.1->esrally) (3.10.4)
Requirement already satisfied: pyasn1-modules>=0.2.1 in /usr/local/lib/python3.9/site-packages (from google-auth==1.22.1->esrally) (0.4.0)
Requirement already satisfied: six>=1.9.0 in /usr/lib/python3.9/site-packages (from google-auth==1.22.1->esrally) (1.15.0)
Requirement already satisfied: rsa<5,>=3.1.4 in /usr/local/lib/python3.9/site-packages (from google-auth==1.22.1->esrally) (4.9)
Requirement already satisfied: setuptools>=40.3.0 in /usr/lib/python3.9/site-packages (from google-auth==1.22.1->esrally) (53.0.0)
Requirement already satisfied: cachetools<5.0,>=2.0.0 in /usr/local/lib/python3.9/site-packages (from google-auth==1.22.1->esrally) (4.2.4)
Requirement already satisfied: google-crc32c<2.0dev,>=1.0 in /usr/local/lib64/python3.9/site-packages (from google-resumable-media[requests]==1.1.0->esrally) (1.5.0)
Requirement already satisfied: attrs>=17.4.0 in /usr/local/lib/python3.9/site-packages (from jsonschema==3.1.1->esrally) (24.2.0)
Requirement already satisfied: importlib-metadata in /usr/local/lib/python3.9/site-packages (from jsonschema==3.1.1->esrally) (8.2.0)
Requirement already satisfied: pyrsistent>=0.14.0 in /usr/local/lib64/python3.9/site-packages (from jsonschema==3.1.1->esrally) (0.20.0)
Requirement already satisfied: yarl<2.0,>=1.0 in /usr/local/lib64/python3.9/site-packages (from aiohttp<4,>=3->elasticsearch[async]==8.6.1->esrally) (1.9.4)
Requirement already satisfied: frozenlist>=1.1.1 in /usr/local/lib64/python3.9/site-packages (from aiohttp<4,>=3->elasticsearch[async]==8.6.1->esrally) (1.4.1)
Requirement already satisfied: aiosignal>=1.1.2 in /usr/local/lib/python3.9/site-packages (from aiohttp<4,>=3->elasticsearch[async]==8.6.1->esrally) (1.3.1)
Requirement already satisfied: async-timeout<5.0,>=4.0 in /usr/local/lib/python3.9/site-packages (from aiohttp<4,>=3->elasticsearch[async]==8.6.1->esrally) (4.0.3)
Requirement already satisfied: aiohappyeyeballs>=2.3.0 in /usr/local/lib/python3.9/site-packages (from aiohttp<4,>=3->elasticsearch[async]==8.6.1->esrally) (2.3.7)
Requirement already satisfied: multidict<7.0,>=4.5 in /usr/local/lib64/python3.9/site-packages (from aiohttp<4,>=3->elasticsearch[async]==8.6.1->esrally) (6.0.5)
Requirement already satisfied: pyparsing>=2.0.2 in /usr/lib/python3.9/site-packages (from packaging>=14.0->docker==6.0.0->esrally) (2.4.7)
Requirement already satisfied: pyasn1<0.7.0,>=0.4.6 in /usr/local/lib/python3.9/site-packages (from pyasn1-modules>=0.2.1->google-auth==1.22.1->esrally) (0.6.0)
Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.9/site-packages (from requests<2.32.0->esrally) (3.7)
Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib64/python3.9/site-packages (from requests<2.32.0->esrally) (3.3.2)
Requirement already satisfied: zipp>=0.5 in /usr/local/lib/python3.9/site-packages (from importlib-metadata->jsonschema==3.1.1->esrally) (3.20.0)
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
[root@easysearch /]# esrally --version
esrally 2.11.0
[root@easysearch /]#
关于 Rally 的更多内容,请参阅官方文档:
https://esrally.readthedocs.io/en/stable/
收起阅读 »作者:少安事务所
原文:https://mp.weixin.qq.com/s/9eEH38kgsw4i150CJqyxvQ
【搜索客社区日报】第1886期 (2024-08-23)
https://opensearch.org/blog/In ... ithm/
2、Elasticsearch 8 RAG 技术分享
https://mp.weixin.qq.com/s/-0vYPmMS2xZUcKkaq5TaQA
3、腾讯云Elasticsearch 优化Lucene性能:高性能缓存的读写锁解决方案
https://mp.weixin.qq.com/s/g-JPECyz3wP6A69Sj-EVVw
4、Easysearch 性能测试方法概要
https://mp.weixin.qq.com/s/9eEH38kgsw4i150CJqyxvQ
编辑:Fred
更多资讯:http://news.searchkit.cn
https://opensearch.org/blog/In ... ithm/
2、Elasticsearch 8 RAG 技术分享
https://mp.weixin.qq.com/s/-0vYPmMS2xZUcKkaq5TaQA
3、腾讯云Elasticsearch 优化Lucene性能:高性能缓存的读写锁解决方案
https://mp.weixin.qq.com/s/g-JPECyz3wP6A69Sj-EVVw
4、Easysearch 性能测试方法概要
https://mp.weixin.qq.com/s/9eEH38kgsw4i150CJqyxvQ
编辑:Fred
更多资讯:http://news.searchkit.cn 收起阅读 »
【搜索客社区日报】第1885期 (2024-08-21)
https://cloud.tencent.com/deve ... 46232
2.LangChain 与 Elastic 合作,加入向量数据库和语义重排序功能以增强 RAG原创
https://cloud.tencent.com/deve ... 43581
3.RAG:如何与您的数据对话
https://cloud.tencent.com/deve ... 79569
编辑:kin122
更多资讯:http://news.searchkit.cn
https://cloud.tencent.com/deve ... 46232
2.LangChain 与 Elastic 合作,加入向量数据库和语义重排序功能以增强 RAG原创
https://cloud.tencent.com/deve ... 43581
3.RAG:如何与您的数据对话
https://cloud.tencent.com/deve ... 79569
编辑:kin122
更多资讯:http://news.searchkit.cn 收起阅读 »