使用 reindex 来修改 elasticsearch 索引mapping
elasticsearch 在创建好index之后mapping是不能动态修改,如果需要改动只能通过新增字段或者reindex api 来迁移数据,创建新的索引 。 没有通过动态模板来为这个字段指定类型, elasticsearch 默认将这种结构的数据设置成了 Object 类型
# 重新创建index在迁移数据
1、例如:
首先创建并设置好mapping:
{
"mappings": {
"properties": {
"geoip": {
"properties": {
"location": {
"ignore_malformed": "true",
"type": "geo_point"
}
}
}
}
}
}
PUT _template/logstash
{
"template": "logstash-*",
"settings": {
"index.refresh_interval" : "60s",
"number_of_shards": 2
},
"mappings": {
"properties": {
"geoip": {
"properties": {
"location": {
"ignore_malformed": "true",
"type": "geo_point"
}
}
}
}
}
}
创建新的index
PUT logstash-ali-k8s-nginx-ingress-controller-b275w-new-2020.01.12
POST _reindex
{
"source": {
"index": "logstash-ali-k8s-nginx-ingress-controller-b275w-2020.01.12"
},
"dest": {
"index": "logstash-ali-k8s-nginx-ingress-controller-b275w-new-2020.01.12"
}
}