elasticsearch dsl 扫描结果

Aru*_*ran 4 python python-3.x elasticsearch-dsl elasticsearch-dsl-py

有人可以指出我_source在 elasticsearch dsl python 客户端中使用扫描 API 时如何从生成器中提取结果吗?

例如,我正在使用(从这个例子中,elasticsearch-dsl scan

for hit in s.scan():
    print(hit)
Run Code Online (Sandbox Code Playgroud)

我得到以下

<Hit(beacon/INDEX/_Mwt9mABoXXeYV0uwSC-): {'client_number': '3570', 'cl...}>
Run Code Online (Sandbox Code Playgroud)

如何从命中生成器中提取字典?

Ami*_*der 5

每个Hit都有to_dict(),因此你可以这样做hit.to_dict()

for hit in s.scan():
    print(hit.to_dict())
Run Code Online (Sandbox Code Playgroud)

注意hit.to_dict()不转换元信息,您可以从元对象中获取元信息,即:

hit_dict = hit.to_dict()
hit_dict['meta'] = hit.meta.to_dict()
Run Code Online (Sandbox Code Playgroud)