es修改索引字段类型

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了es修改索引字段类型相关的知识,希望对你有一定的参考价值。

参考技术A 由于ElasticSearch没有像mysql一样可以直接字段数据类型的方法,因此需要通过创建中间索引:data_index_1,备份数据到中间索引:data_index_1,然后删除原索引: data_index,重新创建正确数据类型索引:data_index,再把中间索引:data_index_1的数据备份到新创建索引:data_index。语句通过kibana的 dev_tools/console 执行。

PUT demo_metric_1/

POST demo_metric_1/type/_mapping

"type":
"properties":
"log_time_date":
"type": "date",
"format": "epoch_millis"
,
.....




POST _reindex

"source":
"index": "demo_metric"
,
"dest":
"index": "demo_metric_1"



GET /demo_metric/type/_search

GET /demo_metric_1/type/_search

DELETE demo_metric

PUT demo_metric/

POST demo_metric/type/_mapping

"type":
"properties":
"log_time_date":
"type": "date",
"format": "epoch_millis"
,
.....




POST _reindex

"source":
"index": "demo_metric_1"
,
"dest":
"index": "demo_metric"



DELETE demo_metric_1

原文链接: https://blog.csdn.net/wuqixiufen2/article/details/104793172/

es之重建索引

1.为什么需要重建索引

  举个例子,如果一个字段是text类型,如果想修改为Long类型,是不能直接修改的。

  在重建的过程中,需要有别名的参与。

 

2.操作步骤

  对当前的索引新建一个别名

  新建一个新的索引,同步结构

  同步数据

  给新的索引见一个别名

  删除老的索引的别名

  删除老的索引

 

二:操作步骤详解

1.对当前的索引添加别名

POST /_aliases
{
  "actions": [
    {
      "add": {
        "index": "nba",
        "alias": "nba_lastest"
      }
    }
  ]
}

  

2.新增?个索引(?如修改字段类型,jerseyNo改成keyword类型)

PUT /nba_20200202
{
  "mappings": {
    "properties": {
        "age" : {
          "type" : "integer"
        },
        "birthDay" : {
          "type" : "date"
        },
        "birthDayStr" : {
          "type" : "keyword"
        },
        "code" : {
          "type" : "text"
        },
        "country" : {
          "type" : "text"
        },
        "countryEn" : {
          "type" : "text"
        },
        "displayAffiliation" : {
          "type" : "text"
        },
        "displayName" : {
          "type" : "text"
        },
        "displayNameEn" : {
          "type" : "text"
        },
        "draft" : {
          "type" : "long"
        },
        "heightValue" : {
          "type" : "float"
        },
        "jerseyNo" : {
          "type" : "keyword"
        },
        "playYear" : {
          "type" : "long"
        },
        "playerId" : {
          "type" : "keyword"
        },
        "position" : {
          "type" : "text"
        },
        "schoolType" : {
          "type" : "text"
        },
        "teamCity" : {
          "type" : "text"
        },
        "teamCityEn" : {
          "type" : "text"
        },
        "teamConference" : {
          "type" : "keyword"
        },
        "teamConferenceEn" : {
          "type" : "keyword"
        },
        "teamName" : {
          "type" : "keyword"
        },
        "teamNameEn" : {
          "type" : "keyword"
        },
        "weight" : {
          "type" : "text"
        }
      }
  }
}

  

3.给新的索引,同步数据

  添加的参数,是异步执行的意思

POST /_reindex?wait_for_completion=false
{
  "source": {
    "index": "nba"
  },
  "dest": {
    "index": "nba_20200202"
  }
}

  效果:

{
  "task" : "O9L9cZRfQwWqC2UVUaxMaQ:18594274"
}

  

4.替换别名

POST /_aliases
{
  "actions": [
    {
      "add": {
        "index": "nba_20200202",
        "alias": "nba_lastest"
      }
    },
    {
      "remove": {
        "index": "nba",
        "alias": "nba_lastest"
      }
    }
  ]
}

  

5.删除旧的索引

  其实,这里不删除也行,但是会占用一些资源

DELETE /nba

  

6.进行验证

GET /nba_lastest/_search
{
  "query": {
    "match_all": {}
  }
}

  

 

以上是关于es修改索引字段类型的主要内容,如果未能解决你的问题,请参考以下文章

es如何修改es索引字段类型 reindex

[Elasticsearch] ES修改字段类型

es 修改 mapping 字段类型

es 修改 mapping 字段类型

es 修改 mapping 字段类型

es修改索引时间格式