如何从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
相关产品推荐
相关产品推荐

