使用 reindex 来修改 elasticsearch 索引mapping

作者: root007 分类: EFK,Linux 发布时间: 2020-01-15 10:27

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"
  }
}

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注