在 elasticsearch 7.8.1 中尝试索引时,出现 "field" is too large, must be <= 32766 有解决方案吗?

When trying to index in elasticsearch 7.8.1, an error occurs saying "field" is too large, must be <= 32766 Is there a solution?

尝试在 elasticsearch 7.8.1 中建立索引时,出现错误“testField”太大,必须 <= 32766 有解决方案吗?

字段信息

“测试场”:{ “类型”:“关键字”, “指数”:假 }

这是一个 known issue,目前尚不清楚解决它的最佳方法。 Lucene 强制执行最大期限长度为 32766,超过该长度文档将被拒绝。

在解决此问题之前,您可以选择两个直接选项:

一个。使用 script ingest processor 将值截断为最多 32766 字节。

PUT _ingest/pipeline/truncate-pipeline
{
  "description": "truncate",
  "processors": [
    {
      "script": {
        "source": """
          ctx.testField = ctx.testField.substring(0, 32766);
        """
      }
    }
  ]
}

PUT my-index/_doc/123?pipeline=truncate-pipeline
{ "testField": "hgvuvhv....sjdhbcsdc" }

乙。使用具有适当分析器的 text 字段,该分析器将 truncate 该值,但您将失去对该字段进行聚合和排序的能力。

如果您想将字段保留为 keyword,我会选择选项 A