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