标签:res 批量 指定 lis 方法 字段名 col code actions
一.方法一
def update_data_batch(self,actions): """ 批量更新数据 :param actions: :return: """ item_list=[] for data in actions: dic = { "_index": self.index, "_type": self._type, "_op_type": "update", "_id": data.get(‘id‘), "doc": data } item_list.append(dic) if len(item_list) == 500: success, _ = bulk(self.client, item_list) item_list.clear() if item_list: success, _ = bulk(self.client, item_list) print(success, _) self.client.indices.refresh() if __name__ == ‘__main__‘: ll=[] for i in range(10): dic={ "size":1111,‘id‘:i } ll.append(dic) es_tt.update_data_batch(ll)
其实就是把要更新的字段的值直接作为doc字段的值,另外是一定要指定_id的,也就是要更新到哪一条数据
方法二.
ll = [] for num, data in enumerate(es_tt.scan_all_data()): insert_dic = { "_index": es_tt.index, "_type": es_tt._type, "_op_type": "update", #指定更新方式插入数据 "_id": data.get(‘id‘), "script": { "source": "ctx._source.price=params.price", #ctx._source.price指定是原数据要更新的字段为price, "params": { #params为参数,params中的字段名可以随便设置,值为用来替换原数据中字段的值 "price": num } } } ll.append(insert_dic) bulk(es_tt.client, ll)
#主要是指定script字段,里面有两个字段,source和params,soure指定原数据套替换的字段和替换成什么值,params指定要替换成的值
标签:res 批量 指定 lis 方法 字段名 col code actions
原文地址:https://www.cnblogs.com/tjp40922/p/13211150.html