我有一个 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 没有效果?