【问题标题】:elasticsearch dsl scan resultselasticsearch dsl扫描结果
【发布时间】:2018-10-11 14:39:08
【问题描述】:

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

例如,我正在使用(来自此示例,elasticsearch-dsl scan

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

我得到以下信息

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

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

【问题讨论】:

    标签: python python-3.x elasticsearch-dsl elasticsearch-dsl-py


    【解决方案1】:

    每个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()
    

    【讨论】:

      【解决方案2】:

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

      hit_dict = hit.to_dict()
      hit_dict['meta'] = hit.meta.to_dict()
      

      【讨论】:

      • 我必须把它交给元部分。非常感谢。仅供参考:scan() 会返回null 分数,但是您可以从explanation 中提取分数(假设您已将extra 设置为explain)并使用它来对结果进行排序。干杯
      猜你喜欢
      • 1970-01-01
      • 2016-08-24
      • 2020-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多