如何在ElasticSearch中将一个字段从index=false更改为index=true?

4
我有一个字段,最初设置为"index": false,因为我们认为我们从未需要查询这个特定字段。现在已经过去了大约9个月,我们有一个新的功能请求需要我们查询此字段。
我知道ES提供了一些不错的功能,例如fields,可以为字段添加更多功能,但似乎不允许通过简单添加子字段来将 index = false 更改为 index = true
经过一些搜索,我无法找到解决此问题的方法,而又不涉及到 1) 创建一个全新字段或者 2) 重新索引所有数据。
有人知道一种干净/没有副作用的方法来向现有字段添加此类功能吗?如果没有,建议的流程是什么?
以下是当前字段的情况:
{
  "mappings": {
      "entity": {
        "properties": {
          "contentType": {
            "type": "keyword",
            "index": false
          }
        }
      }
    }
}

就像我所说的,我正在寻找最简单的方法将"index"更改为true

谢谢!


据我所知,现有的映射是不可变的,这就是为什么你只能看到这两种方法。 - Miek
啊,真的吗...好的,在这两个选项之间,创建一个新字段可能是尽快让事情正常工作的最佳选择。 - Matt Hintzke
你有多少内容?重新索引可能是最理想的选择,但你说得对,添加一个新字段,该字段与源返回的数据相同,可能是最简单的解决方案。 - Miek
我们有大约15TB的数据和94亿个文档,因此重新索引并不理想 :|。我认为添加一个新字段,然后稍后删除旧字段并使用重命名处理器是我们的最佳选择。 - Matt Hintzke
是的,这是相当多的数据,我认为你说得对。我理解你只需要从新添加的内容返回源代码,而不需要现有的内容,是吗? - Miek
很不幸,我们确实需要现有文档来处理这个新领域。我们的ES索引存储文档的元数据,并且只有在检测到我们的数据与源数据之间存在“差异”时才会更新,因此我们可以利用管道的这一部分来强制重新索引该字段。 - Matt Hintzke
1个回答

2

很抱歉,您需要创建一个新的索引并重新索引。

不过,重新索引 API 可以提供很大的帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接