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<>
我已经在我的 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<>