【问题标题】:ElasticSearch: Ids ending in period/dotElasticSearch:ID以句点/点结尾
【发布时间】:2022-01-17 18:52:17
【问题描述】:

这些天我们正在经历一个非常有趣的情况。我们之前有 ElasticSearch 6.2 并将其升级到 7.1。看起来旧版本保存的一些数据与新版本不再兼容,我正在寻找解决方案。

这是使用旧版本保存的记录示例:

        "_index" : "products-0_v7",
        "_type" : "_doc",
        "_id" : "18442_Product one.",
        "_score" : 11.565834,
        "_source" : {
          "description" : "",
          "priceExVat" : 15.65
        }```

问题是 Nest 库无法再检索到这个值:

_client.Get<Product>(productId, x => x.Index(index))

调试调用时,句号被去除。在索引操作期间也会发生同样的事情:

var indexRequest = new IndexRequest<InvoicableProduct>(product, aliasErpimport, new Id(product.Id));
          
var ret = _client.Index(indexRequest);

关于如何解决这个问题的任何想法?是否有可能根本不剥离期间?如果您为诸如“产品一”之类的值编制索引(带有额外空格),它会起作用,但由于原始记录没有尾随空格,因此会创建重复。

【问题讨论】:

  • 根据upgrade guide,您应该先将 6.2 升级到 6.8,然后再升级到 7.x。如果这不能解决问题,则可能是nest 错误; Elasticsearch 7.x 索引并检索 ID 以点结尾的文档,没有任何问题。
  • @ilvar 如果我是从 kibana 使用 curl 命令而不是从 Nest 库中执行此操作,它正在工作。调用时图书馆正在剥离点
  • 考虑为nest提交问题

标签: elasticsearch nest


【解决方案1】:

经过几天的调查,我找到了解决方案。从头开始创建一个新项目并运行相同的代码后,它可以工作,所以我必须弄清楚当前代码中是什么破坏了它。

Web.config 有一行与此类似的代码:

&lt;httpRuntime maxRequestLength="2147483647" maxQueryStringLength="32768" maxUrlLength="65536" /&gt;

事实证明,问题在于 httpRuntime 缺少 targetFramework 属性。

这解决了它:

&lt;httpRuntime targetFramework="4.8" maxRequestLength="2147483647" maxQueryStringLength="32768" maxUrlLength="65536" /&gt;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-11
    • 2021-01-21
    • 1970-01-01
    • 2020-02-16
    • 2019-01-02
    • 2017-08-23
    • 1970-01-01
    相关资源
    最近更新 更多