Elasticsearch .NET 客户端的演变

这篇具有很好参考价值的文章主要介绍了Elasticsearch .NET 客户端的演变。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

作者:Florian Bernd

在 .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 将逐步淘汰,并在年底达到生命周期终点。强烈建议开发人员尽早开始迁移工作,以确保顺利过渡并减轻潜在的中断。采用 Elastic.Clients.Elasticsearch 不仅确保与最新服务器特性的兼容性,还可以使应用程序免受已弃用功能的影响。

一个重要的破坏性变化,例如与聚合相关。在 NEST 中,流畅的 API 用法如下:

s => s
.Aggregations(aggs => aggs
    .Children<CommitActivity>("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 => childAggs
			.Add("average_per_child", agg => agg.Avg(avg => avg.Field(p => p.ConfidenceFactor)))
			.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。

资源

  • GitHub 上的 Elastic.Clients.Elasticsearch v8 客户端
  • NuGet 上的 Elastic.Clients.Elasticsearch v8 客户端

准备好将 RAG 构建到你的应用程序中了吗? 想要尝试使用向量数据库的不同 LLMs?
在 Github 上查看我们的 LangChain、Cohere 等示例 notebooks,并参加即将开始的 Elasticsearch 工程师培训!

原文:Evolution of the Elasticsearch .NET Client — Elastic Search Labs文章来源地址https://www.toymoban.com/news/detail-858713.html

到了这里,关于Elasticsearch .NET 客户端的演变的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Elasticsearch启动报updatejava.net.UnknownHostException: geoip.elastic.co错误

    :ES启动时尝试去连接geoip.elastic.co数据库,不解决也可正常访问 在 elasticsearch.yml 中加上一下代码,表示不去连接。 如果访问localhost:9200显示《该网页无法正常运作》如下: 原因:ssl地址访问到了默认地址 解决方法:在 elasticsearch.yml 中修改配置为 false 如下。 重启服务后如下

    2024年02月11日
    浏览(47)
  • ChatGPT 和 Elasticsearch:使用 ChatGPT 处理 Elastic 数据的插件

    作者:Baha Azarmi 你可能已经阅读过这篇关于我们将 Elasticsearch 的相关性功能与 OpenAI 问答功能相结合的博文。 该帖子的主要思想是说明如何将 Elastic 与 OpenAI 的 GPT 模型结合使用来构建响应并向用户返回上下文相关的内容。 我们构建的应用程序可以公开一个搜索端点并被任何

    2024年02月06日
    浏览(43)
  • ChatGPT 和 Elasticsearch:使用 Elastic 数据创建自定义 GPT

    作者:Sandra Gonzales ChatGPT Plus 订阅者现在有机会创建他们自己的定制版 ChatGPT,称为 GPT,这替代了之前博客文章中讨论的插件。基于本系列的第一部分的基础 —— 我们深入探讨了在 Elastic Cloud 中设置 Elasticsearch 数据和创建向量嵌入 —— 这篇博客将指导你完成开发一个定制的

    2024年04月26日
    浏览(36)
  • Elasticsearch:如何通过 3 个简单步骤从 Elastic 数据中删除个人身份信息

    作者:Peter Titov 对于任何组织来说,个人身份信息 (Personally Identifiable information, PII) 合规性都是一个日益严峻的挑战。 无论你是在电子商务、银行、医疗保健还是其他数据敏感的领域,PII 都可能会在无意中被捕获和存储。 拥有结构化日志,可以轻松快速识别、删除和保护敏

    2024年02月13日
    浏览(50)
  • Observability:如何把 Elastic Agent 采集的数据输入到 Logstash 并最终写入到 Elasticsearch

    在之前的文章 “安装独立的 Elastic Agents 并采集数据 - Elastic Stack 8.0”,我们详述了如何使用 No Fleet Server 来把数据写入到 Elasticsearch 中。在今天的文章中,我们来详述如下使用 Elastic Agents 在独立(standalone)模式下来采集数据并把数据最终通过 Logstash 来写入到 Elasticsearch 中去

    2024年02月11日
    浏览(51)
  • Elasticsearch:NLP 和 Elastic:入门

    自然语言处理 ( N atural L anguage P rocessing - NLP) 是人工智能 (AI) 的一个分支,专注于尽可能接近人类解释的理解人类语言,将计算语言学与统计、机器学习和深度学习模型相结合。 AI - Artificial Inteligence 人工智能 ML - Machine Learning 机器学习 DL - Deep Learning  深度学习 NLP - Naturual L

    2024年02月05日
    浏览(48)
  • Elasticsearch8重置elastic用户密码

    elastic可以说是es中预留的一个用户名,在按照官网yum安装方法安装启动后通过下面的方式测试是否正确运行 因为安装完成后自动开启了安全访问,所以必须要加 --cacert参数指定安装自动生成的认证文件,协议必须是https,但是结果返回了: 很纳闷,不知道为啥,既然是无法认

    2024年02月12日
    浏览(38)
  • Elasticsearch:在 Elastic 中访问机器学习模型

    作者:Bernhard Suhm, Josh Devins Elastic® 让你可以应用适合你的用例和 ML 专业水平的机器学习 (ML)。 你有多种选择: 利用内置的模型。 除了我们的可观察性和安全解决方案中针对特定安全威胁和系统问题类型的模型外,你还可以开箱即用地使用我们专有的 Elastic Learned Sparse Encod

    2024年02月14日
    浏览(41)
  • elasticsearch&elastic-head docker安装

    Elasticsearch8.7.1 安装 拉取镜像 创建elastic 网络 执行创建 注意log中的elastic 用户密码 重置密码:docker exec -it esA /usr/share/elasticsearch/bin/elasticsearch-reset-password 4. 查看结果 拷贝证书到当前文件夹 访问9200 elasticsearch-head 安装 拉取镜像 执行创建 访问9100 elasticsearch-head 无法连接elasti

    2024年02月06日
    浏览(38)
  • Elastic:linux设置elasticsearch、kibana开机自启

    每次启动服务器都要手动启动es服务,相当之不方便,为此,书写一个脚本,实现es、kibana的开机自启 首先任何服务要实现开机自启,都可分为如下三步: 1、在 /etc/init.d 目录下创建启动、关闭服务的脚本,脚本中要设置运行级别、启动优先级、关闭优先级等。 2、给脚本赋权

    2024年02月14日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包