elasticsearch的数据某字段批量去空格及更新操作


用script脚本语法,操作通过的ES版本7.2

# 正常文本替换
POST /full_tm_info/_update_by_query
{

  "query": {
    "term": {
      "term_id": {
        "value": "035-2179"
      }
    }
  },
  "script": {
    "lang": "painless",
    "source": "ctx._source.notes_cn='这一措辞于2008年11月11日被修改为\"冻结\"这些服务的自助服务方面阐明了为什么这些服务属于第35类零售商店类型的服务。作为餐厅服务,这种服务不属于第43类,因为这种服务关注的是供消费的食物的准备和提供,而不是供购买的产品的特点。'"
  }

}

# 批量去空格
POST /full_tm_info/_update_by_query
{
  "query": {
    "match": {
      "reg_name_cn.keyword": "腾讯科技(深圳)有限公司 "
    }
  },
  "script": {
    "lang": "painless",
    "source": "ctx._source.reg_name_cn=ctx._source.reg_name_cn.trim()"
  }
}

# 如果查询条件用正则的方式,要去掉字尾的空格,则可以有以下写法
POST /full_tm_info/_update_by_query
{
  "query": {
    "regexp": {
      "reg_name_cn.keyword": ".* "
    }
  },
  "script": {
    "lang": "painless",
    "source": "ctx._source.reg_name_cn=ctx._source.reg_name_cn.trim()"
  }
}

其他示例

#batch update or bulk update 
POST /tv_stats_play_dur*/doc/_update_by_query?conflicts=proceed
{
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "root_id": 5
          }
        },
        {
          "match": {
            "sub_id": 0
          }
        }
      ],
      "must_not": [
        {
          "match": {
            "root_name": "直播"
          }
        }
      ]
    }
  },
  "script": {
    "lang": "painless",
    "source": "ctx._source.root_name = params.live_name",
    "params": {
      "live_name": "直播"
    }
  }
}

声明:梨木乔の技术栈|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - elasticsearch的数据某字段批量去空格及更新操作


梨木乔の技术栈