ElasticSearch,size参数对helpers.scan函数不起作用

时间:2016-10-13 10:50:56

标签: python elasticsearch

我使用以下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)

当我调试代码时,我只想获取一些记录以确保我的代码是正确的。如果我获取整个索引,我就无法快速调试代码。

1 个答案:

答案 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