代码之家  ›  专栏  ›  技术社区  ›  etudor

Elasticsearch 7.11 Python扫描是无限的

  •  0
  • etudor  · 技术社区  · 5 年前
    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']}
    
    0 回复  |  直到 5 年前