0

我有“T1”类型的索引映射,如下所示:

"T1" : {
    "properties" : {
        "prop1" : {
            "type" : "text"
        }
    }
}

现在我想将 prop1 的类型从 更改textkeyword。我不想删除索引。我还读到有人建议用新类型创建另一个属性并替换它。但是我必须更新我不感兴趣的旧文件。我尝试如下使用 PUT api,但我从来没有工作过。

PUT /indexName/T1/_mapping -d
{
    "T1" : {
        "properties" : {
            "prop1" : {
                "type" : "keyword"
            }
        }
    }
}

有什么办法可以做到这一点?

4

2 回答 2

2

无法修改映射,因此您使用的 PUT api 将不起作用。必须使用要使用的更新映射创建新索引,并将所有数据重新索引到新索引。为防止停机,您始终可以使用别名: https ://www.elastic.co/blog/chang-mapping-with-zero-downtime

于 2017-08-25T17:05:09.610 回答
1

映射一旦被持久化就无法更新。唯一的选择是使用正确的映射创建一个新索引,并使用 ES 提供的重新索引 API 重新索引您的数据。

您可以在此处阅读重新索引 API: https ://www.elastic.co/guide/en/elasticsearch/reference/5.5/docs-reindex.html

于 2017-08-25T11:52:07.680 回答