ES批量操作-更新

Python ES批量有bulk、streaming_bulk、update_bu_query 3種方式,個人實驗update_bu_query效率最高。以其爲例

1、按條件更新文檔:

kibana語法

POST /rec_userinfo_v1/_update_by_query?conflicts=proceed
{
  "query": {
    "terms": {"uid":[470979096, 331290690]}
  },
  "script":{
    "lang":"painless",
    "inline":"ctx._source.uidstatus = params.last",
    "params": {"last":6}
  }
}
// 查詢修改結果
GET /rec_userinfo_v1/_search
{
  "query": {
    
    "terms": {
      "uid": [
        470979096, 331290690
      ]
    }
  }
}
// 模糊搜索結果做條件
updateBody = {
    "query": {
        "query_string": {"default_field": "topic", "query": "*{}*".format(topicstr)}
    },
    "script": {
        "inline": "ctx._source.state = params.index",
        "params": {
            "index": 2
        },
        "lang": "painless"

    }
}

// 精準條件
updateBody = {
    "query": {
        "terms": {"tid": [123,456]}
    },
    "script": {
        "inline": "ctx._source.state = params.index",
        "params": {
            "index": 2
        },
        "lang": "painless"

    }
}
print(updateBody)
es_client = Elasticsearch(["IP:9092"], timeout=60)
es_client.update_by_query(index="topic", body=updateBody)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章