有没有办法用elasticsearch python bulk api一次插入2000多行?

2024-05-19 22:26:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在研究一个基于时间的数据集。你知道吗

感谢elasticsearch python API,我正在while循环中检索复合聚合结果。你知道吗

我正在尝试将结果索引到一个新索引中,但是bulk不希望每次批量使用索引超过2000行

我已经试着给出我的每一行结果,索引中间批量,但没有效果。你知道吗

def index_metric(query: str, es=es, from_index=ES_INDEX):

    res = es.search(index=ES_INDEX, body=query, size=0)
    buckets = res["aggregations"]["my_bucket"]["buckets"]

    after_key = res["aggregations"]["my_bucket"]["after_key"]

    while "after_key" in res["aggregations"]["my_bucket"].keys():
        after_key = res["aggregations"]["my_bucket"]["after_key"]

        my_metric["aggs"]["my_bucket"]["composite"].update({"after": after_key})
        res = es.search(index=ES_INDEX, body=my_metric, size=0)
        int_buckets = res["aggregations"]["my_bucket"]["buckets"]
        buckets = buckets + int_buckets
        return buckets


if __name__ == "__main__":
    for query in queries:
        print(datetime.now())
        to_index = index_query(path=query, es=es, from_index=ES_INDEX)
        a = bulk(es, to_index)
        print(a)

Tags: keyindexbucketesmyresbulkquery