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

 

發佈了36 篇原創文章 · 獲贊 1 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章