ElasticSearch:ID 以 period/dot 结尾

ElasticSearch: Ids ending in period/dot

这几天我们遇到了一个很有趣的情况。我们之前有 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);

知道如何解决这个问题吗?有没有可能根本不剥夺这段时间?如果您为诸如“产品一”之类的值编制索引(带有额外的 space),它会起作用,但这会创建一个副本,因为原始记录没有尾随 space.

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

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

<httpRuntime maxRequestLength="2147483647" maxQueryStringLength="32768" maxUrlLength="65536" />

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

已修复:

<httpRuntime targetFramework="4.8" maxRequestLength="2147483647" maxQueryStringLength="32768" maxUrlLength="65536" />