我使用以下python代码来获取ElasticSearch记录。我只想获得50000条记录。但事实是我得到了整个索引(超过100万条记录)。
result = helpers.scan(
es,
query={
"_source": ["points.style_attrs.POI_TYPE", "point.poi_id.encrypted_value"],
"size": 50000,
"query": {
"bool": {
"must": [
{"term": {"metadata.tag": tag}},
{"term": {"metadata.city": city}}
]
}
}
},
size=1000,
index=from_index)
当我调试代码时,我只想获取一些记录以确保我的代码是正确的。如果我获取整个索引,我就无法快速调试代码。
答案 0 :(得分:1)
你做的一切都是正确的,除了你用尺寸做的一件事。正如helpers.scan
的文档中引用的那样size:每次迭代时批量发送的大小(每个分片)。
helpers.scan方法应该返回一个生成器,可以通过迭代来获取记录。在您的情况下,代码看起来像这样:
result = helpers.scan(
es,
query= your_query,
index=from_index)
count = 0
final_result = list()
for each_result in result:
final_result.append(each_result)
count += 1
if count == 50000:
break