ElasticSearch C#:升级到 Nest Version7.0 后,根据对 HEAD 的成功 (404) 低级调用构建的无效 NEST 响应

ElasticSearch C# : after upgrade to Nest Version7.0, Invalid NEST response built from a successful (404) low level call on HEAD

我已经在我的 C# dotnetCore 项目上将我的 Nest 升级到更新版本 7.X。

现在我的所有代码都已更改,以遵守新版本中实施的无类型规则,但是.. 在某些方法中(例如:

 ElasticClient.DocumentExistsAsync<T>(id)

) ,我不再能够从 ElasticSearch 获得响应,而是得到: 从对 HEAD 的成功 (404) 低级别调用构建的无效 NEST 响应 在检查日志时,我发现请求是这样创建的:

IndexName/_doc/id

在 Kibana 上检查时,此请求无效,我必须将其更改为 IndexName/myType/id 这样它就可以工作了

现在,我不知道如何让我的 ElasticClient 创建相同的请求,或获得我正在等待的响应。 非常感谢任何帮助,谢谢

解决方案:供记录和仅供参考。当您服务器中的 Elastic 搜索的版本为 6.X 时,无法使用嵌套库版本 7.X 中的本机 NEST 方法(GET、Exist、ExistDoc ...) 这是为什么 ? 因为 Elasticsearch 在版本 7 之后取消了 Types。因此,当您从 (6.x) 库创建请求时,它会考虑与请求关联的类型,它变成类似于 IndexName/myType/id 但是在 ESv7.x 中,请求中没有 myType 相反,您总是会发现 _doc 之类的: IndexName/_doc/id 不代表类型,而仅代表到文档的路由. 所以结论: 如果你升级你的 ES 服务器 => 升级你的库 如果你升级了你的库并且升级 ES 服务器没有问题 => 升级 ES 服务器 如果您有问题,您仍然可以升级库,但不要使用本机方法,而是使用 .Search<>