Elasticsearch .NET 客户端的演变
2024年5月4日 | by mebius
在 .NET 世界中,与 Elasticsearch 的集成长期以来一直由 NEST 库提供支持,该库作为开发人员与 Elasticsearch 强大的搜索和分析功能进行交互的强大接口。NEST 是出于对 Elasticsearch 本地 .NET 客户端的需求而诞生的,由于其丰富的功能集和无缝的集成能力,很快就受到了开发人员的欢迎。
在 Elasticsearch 首次提交代码后的近 14 年时间里,NEST 一直忠实地跟踪 Elasticsearch 的发布。
然而,随着 Elasticsearch 的演进,维护 NEST 复杂的代码库变得越来越困难。我们意识到需要一种更可持续的客户端开发方法,于是着手从头开始重新设计 .NET 客户端。我们花了将近一年的时间发布第一个 beta 版本,又花了一年的时间接近于支持每个单独的服务器端点。最困难的决定之一是减少库的范围,以优先考虑可维护性。
考虑到当前 Elasticsearch API 的规模,手动维护 450 多个端点和近 3000 种类型(请求、响应、查询、聚合等)已不再实际。为了确保语言客户端与 Elasticsearch 之间的一致性、准确性和及时性,现在通过共享规范自动生成 8.x 客户端和许多相关类型。这是一种在 SDK 和库(例如 Azure、AWS 和 Google Cloud Platform 的库)之间保持客户端与服务器一致性的常见解决方案。
Elasticsearch 规范是 8 年前通过从 NEST 导出类型映射而创建的,通过客户端团队的努力,我们现在可以使用相同的规范创建一个新的 .NET 客户端(以及Java、Go 等多种其他语言的客户端)。
切换到 v8 客户端 Elastic.Clients.Elasticsearch 可以访问所有 Elasticsearch 8 的新功能,还为库本身带来了许多现代化的改进,但与其前身相比,也意味着在便利功能方面的减少。一些新的核心功能包括查询语言 ES|QL、现代化的机器学习(ML)功能以及以 OpenTelemetry 兼容活动形式的改进诊断。从 8.13 版本开始,Elastic.Clients.Elasticsearch 支持几乎所有 Elasticsearch 8 的服务器特性。
随着 8.13 版本的发布,官方宣布了 NEST 的弃用。随着 Elasticsearch 过渡到 Elastic.Clients.Elasticsearch,NEST 将逐步淘汰,并在年底达到生命tgcode周期终点。强烈建议开发人员尽早开始迁移工作,以确保顺利过渡并减轻潜在的中断。采用 Elastic.Clients.Elasticsearch 不仅确保与最新服务器特性的兼容性,还可以使应用程序免受已弃用功能的影响。
一个重要的破坏性变化,例如与聚合相关。在 NEST 中,流畅的 API 用法如下:
s => s
.Aggregations(aggs => aggs
.Children("name_of_child_agg", child => child
.Aggregations(childAggs => childAggs
.Average("average_per_child", avg => avg.Field(p => p.ConfidenceFactor))
.Max("max_per_child", max => max.Field(p => p.ConfidenceFactor))
.Min("min_per_child", min => min.Field(p => p.ConfidenceFactor))
)
)
)
而 v8 客户端需要以下语法:
s => s
.Aggregations(aggs => aggs
.Add("name_of_child_agg", agg => agg
.Children(_ => {})
.Aggregations(childAggs tgcode=> childAggs
.Add("average_per_child", agg => agg.Avg(avg => avg.Field(p => p.ConfidetgcodenceFactor)))
.Add("max_per_child", agg => agg.Max(max => max.Field(p => p.ConfidenceFactor)))
.Add("min_per_child", agg => agg.Min(min => min.Field(p => p.ConfidenceFactor)))
)
)
)
此处提供了全面的迁移指南:迁移指南:从 NEST v7 到 .NET Client v8。
资源
准备好将 RAG 构建到你的应用程序中了吗? 想要尝试使用向量数据库的不同 LLMs?
在 Github 上查看我们的 LangChain、Cohere 等示例 notebooks,并参加即将开始的 Elasticsearch 工程师培训!
原文:Evolution of the Elasticsearch .NET Client — Elastic Search Labs
文章来源于互联网:Elasticsearch .NET 客户端的演变
相关推荐: Elasticsearch:理解近似最近邻 (ANN) 算法
作者:来自 ElasticElastic Platform Team 如果你是在互联网出现之前长大的,你会记得找到新喜好并不总是那么容易。我们是在无意中听到收音机里的新乐队时发现他们的,是因为忘了换频道偶然看到一个新电视节目的,也是几乎完全依据游戏封面的图片来…