You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Elasticsearch DSL Python客户端Scan API生成器提取_source字典?

从Elasticsearch DSL Scan API的Hit对象中提取_source数据

嘿,我来帮你搞定这个问题!当你用scan()方法得到的hit其实是Elasticsearch DSL里的Hit类实例,它提供了好几种便捷方式来获取你要的_source字典数据:

  • 直接访问_source属性
    这是最直观的方式,Hit对象本身就带有_source属性,直接调用就能拿到完整的字典:

    for hit in s.scan():
        source_dict = hit._source
        print(source_dict)
        # 要是想取具体字段也很方便,比如
        print(source_dict['client_number'])
    
  • 字典式访问_source
    Hit对象实现了字典的访问接口,所以你也可以像操作普通字典一样用['_source']来获取:

    for hit in s.scan():
        source_dict = hit['_source']
        print(source_dict)
    
  • 直接访问_source里的具体字段
    更省事的是,Hit对象会自动代理_source里的字段,你不用先拿到_source字典,直接就能访问里面的键:

    for hit in s.scan():
        # 两种方式都可以
        print(hit.client_number)  # 输出 '3570'
        print(hit['client_number'])  # 同样输出 '3570'
    

你看到的<Hit(beacon/INDEX/_Mwt9mABoXXeYV0uwSC-): {'client_number': '3570', 'cl...}>其实是Hit对象的字符串展示形式,里面已经包含了_source的内容,用上面的方法就能轻松把字典数据提取出来啦。

内容的提问来源于stack exchange,提问作者Arun Ramachandran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:01:43