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}"
}
}