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