我有类型'T1'的索引映射,如下所示:
"T1" : {
"properties" : {
"prop1" : {
"type" : "text"
}
}
}
现在我想将prop1的类型从text
更改为keyword
。我不想删除索引。我还读过有人建议用新类型创建另一个属性并替换它。但后来我必须更新我不感兴趣的旧文件。我尝试使用如下的PUT api,但我从不工作。
PUT /indexName/T1/_mapping -d
{
"T1" : {
"properties" : {
"prop1" : {
"type" : "keyword"
}
}
}
}
有没有办法实现这个目标?
答案 0 :(得分:2)
映射无法修改,因此您使用的PUT api将无效。必须使用要使用的更新映射创建新索引,并将所有数据重新索引到新索引。 为了防止停机,您始终可以使用别名: https://www.elastic.co/blog/changing-mapping-with-zero-downtime
答案 1 :(得分:1)
映射一旦持久化,就无法更新。唯一的选择是使用正确的映射创建一个新索引,并使用ES提供的reindex API重新索引数据。
您可以在此处阅读reindex API: https://www.elastic.co/guide/en/elasticsearch/reference/5.5/docs-reindex.html