ES给索引添加字段属性,并更新属性的值

URL:http://10.251.96.69:9200/pro_channel_store_product_v2/_mapping/doc

请求类型:PUT

请求体:

{
  "properties": {
    "deliveryType": {
      "type": "long"
    }
  }
}

说明:pro_channel_store_product_v2是一个索引库的名字,使用时,需要改成你需要的索引名,这个请求将会添加一个类型为long,名字叫deliveryType的属性

 

URL:http://10.251.96.69:9200/pro_channel_store_product_v2/_update_by_query

请求类型:POST

请求体:

{
    "script": {
        "source": "ctx._source['deliveryType']='1';"
    },
    "query": {
        "bool": {
            "must": [
                {
                    "term": {
                        "channelCode": {
                            "value": "22"
                        }
                    }
                },
                {
                    "terms": {
                        "storeCode": [
                            "9284","9286","9287","9289","9290","9297","9299","9300","9308","9316"
                        ]
                    }
                }
            ]
        }
    }
}

说明:query中的是查询条件,会按条件查询出数据,并把查到的数据的deliveryType属性的值设置为1

这种先查询,后修改的方式,有一个很大的优势,就是可以避免ES的版本冲突,昨天晚上半夜开始刷ES数据,加上deliveryType字段,并赋值,结果一直爆出版本冲突,在同事志翔的帮助下,改成这种修改方式,解决了版本冲突。

 

原来有问题的请求体:

{
  "script": {
    "lang": "painless",
    "inline": "if ((ctx._source.storeCode == '9068' || ctx._source.storeCode == '9080' || ctx._source.storeCode == '9082' || ctx._source.storeCode == '9084' || ctx._source.storeCode == '9085') && ctx._source.channelCode=='22') {ctx._source.deliveryType=1}"
  }
}

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值