es如何修改字段类型
如何修改已有索引的字段类型甚至字段名称
·
由于es无法修改mapping,所以要通过新建索引的方式来修改字段类型
演示:如下是一个包含date字段的索引ttteset-000001,接下来我们将其字段类型改为text类型
1、准备创建索引及添加数据
PUT ttteset-000001
{
"mappings": {
"dynamic_date_formats": ["MM/dd/yyyy"]
}
}
PUT ttteset-000001/_doc/1
{
"create_date": "09/25/2015"
}
GET ttteset-000001/_search
{
"query": {
"match_all": {}
}
}
GET ttteset-000001/_mapping
2、创建过渡索引
# 新建索引ttteset-000002,字段类型为text
PUT ttteset-000002
{
"mappings": {
"properties": {
"create_date": {
"type": "text"
}
}
}
}
3、迁移数据
# 迁移数据
POST _reindex
{
"source": {
"index": "ttteset-000001"
},
"dest": {
"index": "ttteset-000002"
}
}
# 查询
GET ttteset-000002/_search
{
"query": {"match_all": {}}
}
# 删除ttteset-000001
DELETE ttteset-000001
# 最后再将ttteset-000001创建出来,把ttteset-000002的数据再导回去即可
PUT ttteset-000001
{
"mappings": {
"properties": {
"create_date": {
"type": "text"
}
}
}
}
POST _reindex
{
"source": {
"index": "ttteset-000002"
},
"dest": {
"index": "ttteset-000001"
}
}
GET ttteset-000001/_search
{
"query": {"match_all": {}}
}
4、如何改变字段名称
## 此外还可以进行字段名修改,新创建的索引字段名为create——time
PUT ttteset-000001
{
"mappings": {
"properties": {
"create_time": {
"type": "text"
}
}
}
}
POST _reindex
{
"source": {
"index": "ttteset-000002"
},
"dest": {
"index": "ttteset-000001"
},
"script": {
"source": "ctx._source.create_time= ctx._source.remove(\"create_date\")"
}
}
更多推荐
已为社区贡献4条内容
所有评论(0)