我有一个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()
观察:
结论:
任何人都知道请帮我弄清楚为什么批量= True没有效果?
答案 0 :(得分:0)
你的低速是关于从旧索引中读取而不是插入新索引。
尝试扫描模式并在阅读时滚动:
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,间隔为1秒,通常不需要重置此设置。