4

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

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

for hit in s.scan():
    print(hit)

我得到以下

<Hit(beacon/INDEX/_Mwt9mABoXXeYV0uwSC-): {'client_number': '3570', 'cl...}>

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

4

2 回答 2

6

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

for hit in s.scan():
    print(hit.to_dict())

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

hit_dict = hit.to_dict()
hit_dict['meta'] = hit.meta.to_dict()
于 2018-05-02T06:14:34.503 回答
3

除了@ami-hollander 回答 - .to_dict()没有转换元信息(例如 id),如果您需要此信息,您可以执行以下操作:

hit_dict = hit.to_dict()
hit_dict['meta'] = hit.meta.to_dict()
于 2019-07-11T14:16:52.067 回答