ES修改mapping中的字段名称

逃离我推掉我的手 2022-09-12 15:56 516阅读 0赞

前言

我们都知道,在ES中一旦声明了字段名称,就不能对字段名称进行修改了。只能新增字段,不能删除、修改已经声明的mapping字段。
那么,如果我们需要修改mapping中的字段名称,需要怎么操作呢?


一、分析

不能直接修改原索引中的mapping字段,那么只能在新索引中重命名索引字段,然后将数据导入到新索引。
而ES中重建索引命令_reindex正好能很好的支持这一点。

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

二、实战

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

  1. POST test/_doc/1?refresh
  2. {
  3. "text": "words words",
  4. "flag": "foo"
  5. }

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

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

  1. POST _reindex
  2. {
  3. "source": {
  4. "index": "test"
  5. },
  6. "dest": {
  7. "index": "test2"
  8. },
  9. "script": {
  10. "source": "ctx._source.tag = ctx._source.remove(\"flag\")"
  11. }
  12. }

3、查看结果

  1. ##根据id查看记录
  2. GET test2/_doc/1
  3. ## 返回结果
  4. {
  5. "found": true,
  6. "_id": "1",
  7. "_index": "test2",
  8. "_type": "_doc",
  9. "_version": 1,
  10. "_seq_no": 44,
  11. "_primary_term": 1,
  12. "_source": {
  13. "text": "words words",
  14. "tag": "foo"
  15. }
  16. }

总结

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

发表评论

表情:
评论列表 (有 0 条评论,516人围观)

还没有评论,来说两句吧...

相关阅读

    相关 如何快速修改map某个Key字段名

    在企业中开发的时候,我们可能会遇到这样的问题,我们在处理map数据的时候,返回给别人的数据,别人说要修改一个字段的名字,这时候就犯难了,好多地方都是用的之前的字段名,改起来好麻

    相关 SQL注入——猜测字段名

    之前两篇文章所说的SQL注入手段均是在服务器层面是root权限,而现实的渗透测试过程中,很多都是无权读取information\_schema库,并且很多拒绝联合访问Union