ElasticSearch 7.x NEST 客户端与 ES 的兼容性 6.x

ElasticSearch 7.x NEST client compatibility with ES 6.x

我们有一些代码很快将需要查询 ElasticSearch 6.x 和 7.x 索引。我们目前正在使用 NEST 与我们的 ES 实例对话,但是从网络上看,似乎 v6 NEST 客户端在与 ES 7.x 对话时不起作用。显而易见的答案是升级到 NEST v7,但我找不到任何关于 v7 NEST 客户端是否向后兼容的信息。

如果我们将 NEST 客户端升级到支持 ElasticSearch 7.x 的版本,这个客户端是否也能与 ElasticSearch 6.x 的实例对话?

基于documentation

Elasticsearch 7.0 can read indices created in version 6.0 or above. An Elasticsearch 7.0 node will not start in the presence of indices created in a version of Elasticsearch before 6.0.

您可以找到客户端的兼容性矩阵here。可能会有一些重大变化,您将无法在使用 NEST 7.x 时使用 elasticsearch 6.x。

如果您想使用 elasticsearch 7.x,您需要安装版本 7.0.0beta1 的 NEST。

我注意到的一些重大变化:

带有 ES 7.3.1 的 NEST 6.8:

  • 库中存在一些您无法解决的序列化错误,即搜索 API.
  • 将 Include Types = true 参数添加到映射 API 的

带有 ES 6.8 的 NEST 7.3.1

  • 部分文档更新的 API 路由在 ES 7 中有所不同,NEST 客户端不会生成正确的路由来进行更新。
  • 日期直方图间隔设置已弃用,但不修复警告
  • 获取映射响应未反序列化为具有属性的可用 C# 对象。

几天后,Elasticsearch 发布了一篇博客,其中介绍了如何使其工作 https://www.elastic.co/blog/nest-and-elasticsearch-net-upgrading-your-codebase