gpt4 book ai didi

ElasticSearch 与 pyes : bulk index

转载 作者:行者123 更新时间:2023-12-02 22:42:29 24 4
gpt4 key购买 nike

我有一个 200M 的文档索引,我想重新索引。

我编写了以下脚本,该脚本遍历旧索引中的文档,并将它们与 balk insert 一起放入新索引中。

每个批量的大小为 2000 个文档。

 search_obj = pyes.query.Search(query = pyes.query.MatchAllQuery(), start=resume_from)

old_index_iterator = self.esconn.search(search_obj, self.index_name)
counter = 0
BULK_SIZE = 2000

for doc in old_index_iterator:
self.esconn.index(doc=doc, doc_type=DOC_TYPE, index=new_index_name, id=doc.get_id(), bulk=True)
counter += 1

if counter % BULK_SIZE == 0:
self.logger.debug("Refreshing...")
self.esconn.refresh()
self.logger.debug("Refresh done.")


self.esconn.refresh()

观察:
  • 我得到的速度很慢:大约 150 个文档/分钟。
  • 刷新操作的时间为 0。如果我删除索引命令(只是从 DB 中读取)-我加快了 10 倍。

  • 结论:
  • 索引忽略 bulk=True 标志,并将每个文档推送到 ES 服务器。

  • 任何人都知道请帮我弄清楚为什么 bulk=True 没有效果?

    最佳答案

    您的低速是关于从旧索引中读取而不是插入新索引。

    尝试扫描模式并在阅读时滚动:

    result_set = self.esconn.search(pyes.query.MatchAllQuery(),indices=INDEX_NAME, doc_types=INDEX_TYPE, scan=True, scroll_timeout="10m")
    for doc in result_set:
    pass # do your insert task

    并且默认刷新大小为400,间隔为1s,一般不需要重新设置。

    关于ElasticSearch 与 pyes : bulk index,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17037904/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com