在 python 中使用弹性搜索 dsl 访问各个字段

access individual fields using elastic search dsl in python

下面是准确的还是应该是其他的?

我得到了预期的结果,只是检查这是否是访问单个(嵌套)字段的最有效方式。

from elasticsearch import Elasticsearch
from elasticsearch_dsl import Search, Q

import json
client = Elasticsearch('my_server')

policy_number = 'POLICY1234'
s = Search(using=client, index = "my_index").query("term",policyNumber=policy_number.lower())
es_response = s.execute()

for hits in es_response:
   print hits['policyNumber']
   print hits.party[0]['fullName']
   print hits.party[0].partyAddress[0]['address1']
   print hits.party[0].partyAddress[0]['city']
   print hits.party[0].phoneList[0]['phoneNumber']

您不需要手动调用 execute,也不必使用 [] 按名称访问字段,您可以只使用属性访问:

for hit in s:
   print hit.policyNumber
   print hit.party[0].fullName
   print hit.party[0].partyAddress[0].address1
   print hit.party[0].partyAddress[0].city
   print hit.party[0].phoneList[0].phoneNumber