ES替换某个索引下的字段的值

ES替换某个索引下的字段的值

前言

在ES的操作中,如果我们已经同步完所有的索引,但是发现同步的时候数据出现了失误,那么在数据量很大的情况下还是要避免重新同步,这个时候就用到了更新替换操作:

操作1

针对于name字段进行替换,将name字段中包含/的替换成/

POST /topic_index/_update_by_query
{
  "script": {
    "source": "ctx._source.name = ctx._source.name.replace('/','/')"
  },
  "query": {
    "exists": {
      "field": "name"
    }
  }
}

操作2

针对nested结构的字段则有点不同了,下面的操作是将xh下的pathName中的%替换成/

POST /topic_index/_update_by_query
{
  "script": {
    "source": """
      for (int i = 0; i < ctx._source.xh.size(); i++) {
        if (ctx._source.xh[i].pathName != null) {
          ctx._source.xh[i].pathName = ctx._source.xh[i].pathName.replace('%','/');
        }
      }
"""
  },
  "query": {
    "nested": {
      "path": "xh",
      "query": {
        "exists": {
          "field": "xh.pathName"
        }
      }
    }
  }
}

有其他的操作大家可以以此类推,目前我只用到了这两种

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值