Elasticsearch 滚动结束 returns 无
Elasticsearch end of scroll returns nothing
我正在为 Python 使用 Elasticsearch 6.1 API,我正在尝试从数据库中的每个文档(303 958 个文档)中读取特定值。
doc = {
'size' : 1000,
'query' : {
'match_all' : {}
}
}
samplesCount = 0
res = es.search(index="index", doc_type='data', body=doc, scroll='1m')
scrollId = res['_scroll_id']
scrollSize = res['hits']['total']
while scrollSize > 0 :
for x in range (0, len(res['hits']['hits']) - 1) :
name = res['hits']['hits'][x]['_source']['name']
samplesCount += 1
print(str(samplesCount) + '. ' + name)
scrollSize -= 1
res = es.scroll(scroll_id=scrollId, scroll='1m')
索引 (samplesCount) 结束于 303 654,似乎 es.scroll returns 其余文档没有结果(大约 300,小于滚动大小)。
同样让我感到好奇的是它以 303 654 结尾......我希望是一个整数(1000 的倍数)。
有什么想法吗?
非常感谢您提供任何有用的提示。
尝试替换
range (0, len(res['hits']['hits']) - 1)
和
range(0, len(res['hits']['hits']))
或(等价地)
range(len(res['hits']['hits']))
从语法和您引用的数字来看,您似乎在 while
循环的每次迭代中跳过 1 条记录。
我正在为 Python 使用 Elasticsearch 6.1 API,我正在尝试从数据库中的每个文档(303 958 个文档)中读取特定值。
doc = {
'size' : 1000,
'query' : {
'match_all' : {}
}
}
samplesCount = 0
res = es.search(index="index", doc_type='data', body=doc, scroll='1m')
scrollId = res['_scroll_id']
scrollSize = res['hits']['total']
while scrollSize > 0 :
for x in range (0, len(res['hits']['hits']) - 1) :
name = res['hits']['hits'][x]['_source']['name']
samplesCount += 1
print(str(samplesCount) + '. ' + name)
scrollSize -= 1
res = es.scroll(scroll_id=scrollId, scroll='1m')
索引 (samplesCount) 结束于 303 654,似乎 es.scroll returns 其余文档没有结果(大约 300,小于滚动大小)。
同样让我感到好奇的是它以 303 654 结尾......我希望是一个整数(1000 的倍数)。
有什么想法吗?
非常感谢您提供任何有用的提示。
尝试替换
range (0, len(res['hits']['hits']) - 1)
和
range(0, len(res['hits']['hits']))
或(等价地)
range(len(res['hits']['hits']))
从语法和您引用的数字来看,您似乎在 while
循环的每次迭代中跳过 1 条记录。