page = helpers.scan(
c, query=q,
index=idx,
scroll='5m',
size=1000,
)
i = 0
for hit in page:
i = i + 1
if i % 1000 == 0 and i > 0:
print("dump finished %i items" % i)
yield {"_source": hit['_source'], "_id": hit['_id']}
问题是,这个循环扫描永远不会结束,最后一批结果可能会被无限次循环。
我将数据转储到一个文件中,第一个条目出现一次。最后一个条目被重复写入,循环继续进行。
不确定这是我的代码中的错误还是库中的错误。
更新1:
slices = [
delayed(iterate_slice)(1, es_host, idx, slices, q, size, logger_name)
]
return db.from_delayed(slices)
那么iterateslice有以下代码:
page = helpers.scan(
c, query=q,
index=idx,
scroll='5m',
size=10000,
)
i = 0
for hit in page:
i++
if i % 1000 == 0 and i > 0:
print("dump finished %i items" % i)
yield {"_source": hit['_source'], "_id": hit['_id']}