ES修改mapping中的字段名称

简介: ES修改mapping中的字段名称

前言


我们都知道,在ES中一旦声明了字段名称,就不能对字段名称进行修改了。只能新增字段,不能删除、修改已经声明的mapping字段。

那么,如果我们需要修改mapping中的字段名称,需要怎么操作呢?


一、分析


不能直接修改原索引中的mapping字段,那么只能在新索引中重命名索引字段,然后将数据导入到新索引。

而ES中重建索引命令_reindex正好能很好的支持这一点。


官网说明:docs-reindex-change-name


二、实战


1、创建索引test并插入数据

POST test/_doc/1?refresh
{
  "text": "words words",
  "flag": "foo"
}

2、通过reindex重命名字段名称

说明:

将原索引test中的字段flag重命名为tag

POST _reindex
{
  "source": {
    "index": "test"
  },
  "dest": {
    "index": "test2"
  },
  "script": {
    "source": "ctx._source.tag = ctx._source.remove(\"flag\")"
  }
}


3、查看结果

##根据id查看记录
GET test2/_doc/1
## 返回结果
{
  "found": true,
  "_id": "1",
  "_index": "test2",
  "_type": "_doc",
  "_version": 1,
  "_seq_no": 44,
  "_primary_term": 1,
  "_source": {
    "text": "words words",
    "tag": "foo"
  }
}


总结


本文主要介绍如何通过索引重建reindex+script脚本实现修改索引字段名称。

目录
相关文章
|
4月前
|
SQL 关系型数据库 MySQL
mysql使用default给列设置默认值的问题
mysql使用default给列设置默认值的问题
35 0
|
11月前
|
SQL 关系型数据库 MySQL
列的完整性约束——设置表字段的默认值(DEFAULT)
列的完整性约束——设置表字段的默认值(DEFAULT)
|
存储 搜索推荐 关系型数据库
|
负载均衡 网络协议 应用服务中间件
ES中索引别名(alias)的到底有什么用
ES中索引别名(alias)的到底有什么用
ES中索引别名(alias)的到底有什么用
|
存储 JSON 自然语言处理
Elasticsearch Mapping之字段类型(field datatypes)
Elasticsearch Mapping之字段类型(field datatypes)
Elasticsearch Mapping之字段类型(field datatypes)
SAP Spartacus b2b table,通过listService的table type字段来控制要加载的数据类型
SAP Spartacus b2b table,通过listService的table type字段来控制要加载的数据类型
78 0
SAP Spartacus b2b table,通过listService的table type字段来控制要加载的数据类型
|
存储 JSON 数据格式
ES7学习笔记(四)字段类型(mapping)
在上一节中,我们创建了索引,在创建索引的时候,我们指定了mapping属性,mapping属性中规定索引中有哪些字段,字段的类型是什么。在mapping中,我们可以定义如下内容: 类型为String的字段,将会被全文索引; 其他的字段类型包括:数字、日期和geo(地理坐标); 日期类型的格式; 动态添加字段的映射规则; 字段的可用类型如下: 简单的类型,比如:text,keyword,date,long,double,boolean,ip。
2988 0
|
NoSQL 关系型数据库 MySQL
Create Table Like Mapping: 基于类型推断的建表方法
![create-table-like-mapping.png](https://ata2-img.cn-hangzhou.oss-pub.aliyun-inc.com/1e60369b1873a7a1c3b358a3194cd3db.png) [Data Lake Analytics](https://www.aliyun.com/product/datalakeanalytics) 作为云上
1096 0