Elasticsearch 本身不允许直接修改字段类型。如果删除现有索引,重新建索引的话则会导致数据丢失。有一个方法是使用别名索引,当需要调整索引时可以先新建一个索引,把数据导入到新索引,之后将别名索引指向新索引。这些操作都是在es上完成,对于应用程序来说是无感知的。
- 查看要被修改索引的映射,此处查看dws_dp_sd_fcd_pnecc索引的映射。
GET /dws_dp_sd_fcd_pnecc/_mapping
- 创建新的索引,并设置修改类型之后的映射,新索引名叫dws_dp_sd_fcd_pnecc11
PUT dws_dp_sd_fcd_pnecc11
{
"mappings" : {
"properties" : {
"abo_code" : {
"type" : "keyword"
},
"addr_city" : {
"type" : "keyword"
},
"ventilator_usage_duration" : {
"type" : "integer"
},
"visit_date" : {
"type" : "date"
},
"visit_dept" : {
"type" : "keyword"
}
}
}
}
- 复制数据到新索引
POST /_reindex
{
"source": {
"index": "dws_dp_sd_fcd_pnecc"
},
"dest": {
"index": "dws_dp_sd_fcd_pnecc11"
}
}
- 查看新旧索引中数据量是否一致
GET dws_dp_sd_fcd_pnecc/_count
GET dws_dp_sd_fcd_pnecc11/_count
- 删除旧索引
DELETE /dws_dp_sd_fcd_pnecc
- 为新索引创建别名
POST /_aliases
{
"actions": [
{
"add": {
"index": "dws_dp_sd_fcd_pnecc",
"alias": "dws_dp_sd_fcd_pnecc11"
}
}
]
}
- 查看所有索引
GET _cat/indices?v
- 查看此库的别名
GET dws_dp_sd_fcd_pnecc11/_alias/*
到此就可以利用别名dws_dp_sd_fcd_pnecc11的别名dws_dp_sd_fcd_pnecc来访问。
如果你有强迫症,也可以把他的别名dws_dp_sd_fcd_pnecc删除,再把新创建的索引dws_dp_sd_fcd_pnecc11这个重复上面1-3步骤,重新创建一个名字为dws_dp_sd_fcd_pnecc的索引,删除的dws_dp_sd_fcd_pnecc11。
例如:
删除dws_dp_sd_fcd_pnecc11索引的别名dws_dp_sd_fcd_pnecc
POST /_aliases
{
"actions": [
{"remove": {"index": "dws_dp_sd_fcd_pnecc11", "alias": "dws_dp_sd_fcd_pnecc"}}
]
}