【问题标题】:Backporting issue going from NEST v7.x to v6.x and or v5.x (Elastic Search)从 NEST v7.x 到 v6.x 和/或 v5.x(弹性搜索)的反向移植问题
【发布时间】:2019-12-12 17:46:57
【问题描述】:

我正在使用 C# NEST 客户端来查询运行 v5.3.x 的 ES 服务器。我成功实现了 v7.x NEST 客户端,但开始遇到一些意外异常,并被告知我应该降级到 v5.x NEST 客户端。

我遇到了一些我已经能够解决的问题。

我必须删除搜索描述符中的 .TypedKeys(null)。 我必须设置 DisableDirectStreaming 我还有两个问题:

POST 数据-

*/**document/**
_search
{"query":{"bool":{"filter":[{"range":{"v_avg":{"gt":260.0}}},
{"range":{"timestamp":{"format":"yyyy-MM-dd'T'HH:mm:ss.SSS",
"gte":"2019-8-5T6:45:25.618"}}}]}},
"size":10000}

由于某种原因,“document/”在 v5.x 和 v6.x 上插入,但在 v7.x 上没有插入,这导致我的查询不返回任何数据。我怎样才能摆脱那个自动文档/添加? Document 是我将搜索查询初始化为的 NEST 记录类型的名称。 我使用“elasticClient.RequestResponseSerializer.SerializeToString(searchDescriptor)”来获取与我的查询等效的原始 json 以用于调试目的。这不适用于 v5.x。一个替代方案将不胜感激,但它看起来无论如何都包含在 API 调用中,所以我可以从那里简单地获取它。

更新: https://www.elastic.co/guide/en/elasticsearch/client/net-api/6.x/index-name-inference.html - v6 具有“当 Project 是目标 POCO 类型时使用的索引”字段,这在 v7 中不存在。 https://www.elastic.co/guide/en/elasticsearch/client/net-api/7.x/index-name-inference.html 如何使用 v6 但端点中没有“项目”字段?

或者换句话说,我有一个默认索引为“data-*”的 v6。 如何让我的端点成为“https://server/defaultindex/_search”而不是“https://server/defaultindex/document/_search”?

提前致谢!

【问题讨论】:

  • 7.x 客户端将不会与 Elasticsearch 5.3.x 兼容,因为 Elasticsearch 端的版本之间存在 API 重大更改,而这反过来又会导致客户端的重大更改。为什么要尝试使用 7.x 客户端?
  • 嗨,Russ,请再次阅读我的帖子。我从 v5.3.x 服务器上的 v7.x 开始。它实际上工作得很好。然后我遇到了一些问题,被告知它们不兼容,所以我应该降级。这就是我想要做的。但我无法成功降级到上面列出的两个问题。希望能帮助您解决这两个问题。

标签: c# elasticsearch search nest


【解决方案1】:

我能够通过将 .Type("") 添加到每个 .Search 查询来解决我自己的问题。

我也尝试在连接设置中设置 .DefaultType 但这不起作用。

【讨论】:

  • 您也可以使用.AllTypes() 将请求发送到{index}/_search 端点
猜你喜欢
  • 2018-11-03
  • 2016-11-22
  • 2019-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多