Elasticsearch.Nest 教程系列 1:Nest 快速入门
本系列博文是“伪”官方文档翻译(更加本土化),并非完全将官方文档进行翻译,而是在查阅、测试原始文档并转换为自己真知灼见后的“准”翻译。有不同见解 / 说明不周的地方,还请海涵、不吝拍砖 :)
官方文档见此:https://www.elastic.co/guide/en/elasticsearch/client/net-api/current/introduction.html
本系列对应的版本环境:ElasticSearch@7.3.1,NEST@7.3.1,IDE 和开发平台默认为 VS2019,.NET CORE 2.1
Elasticsearch.Net 和 NEST 对比说明:
-
Elasticsearch 官方为 .NET 提供了 2 个官方客户端库:Elasticsearch.Net 和 NEST。
-
可以简单理解为 Elasticsearch.Net 是 NEST 的一个子集。
-
NEST 内部使用了 ElasticSearch.Net ,并通过 NEST 可以对外暴露 ElasticSearch.Net 客户端。
-
但 NEST 包含了 ElasticSearch.Net 所没有的一些高级功能,如:
- 强类型查询 DSL:可以将所有请求和响应的对象类型转换 1:1 的.NET 类型。
- 自动转换为 CLR 的数据类型。
基本上 .NET 项目到了要使用上 ElasticSearch 的地步,直接选择 NEST 即可。
在使用 NEST 作为客户端的时候,建议将 ElasticClient 对象作为单例来使用。
-
ElasticClient 被设计为线程安全。
-
ES 中的缓存是根据 ConnectionSettings 来划分的,即服务端缓存针对的是每一个 ConnectionStrings
-
例外: 当你需要连接不同的 ES 集群的时候,就不要用单例了,应为不同的 ElasticClient 使用不同的 ConnectionStrings。
快速使用
使用 Nest 的时候约定 Nest 版本需要跟 ElasticSearch 版本保持一致,即服务端 ES版本为 7.3.1,则 Nest 版本也要使用 7.3.1
以下示例通过 IoC 进行注入(单例),你也可以直接通过单例模式来实现。