我在python 3.7中使用elasticsearch-oss:6.8.3

我正在使用bulk函数更新ES中的值,如下所示:

for hit in hits:
        # hit = {
        #   '_index': 'my-index',
        #   '_score': '1.0',
        #   '_type': '_doc',
        #   '_id': 'YNi6920BHiHVzMIEjF0_',
        #   '_source': {}
        # }
        del hit["_score"]

        hit["_source"].update({something_to_update})
        hit["_op_type"] = "update"

        # Need to deepcopy otherwise as we are in a generator, this will create an id loop in pyhton and raise an ES error
        _source = {"doc": deepcopy(hit["_source"])}

        # yield result
        yield hit

现在它通过错误:http.client.HTTPException:从python elasticsearch API使用批量时获得了100多个头

我认为这来自于HTTP header 的python限制大小。
因此,我想以每次点击的形式在请求正文中传递所有ID,但我不知道该怎么做...

最佳答案

现在,我有一个肮脏的修复方法是:

import http.client

http.client._MAXHEADERS = 1000

关于python-3.x - 如何修复:http.client.HTTPException:从python elasticsearch API使用批量时获得了100多个头,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58525559/

10-09 21:06