您好我想使用elasticsearch dsl执行嵌套搜索,其中文档字段中嵌入了json数据,因此我想要特定的嵌套键值,如 -
以下是文件: -
{
"_index" : "data",
"_type" : "users",
"_id" : "15",
"_version" : 1,
"found" : true,
"_source" : {
"data" : {
"Gender" : "M",
"Marks" : "80",
"name" : "Mayank",
"Address" : "India"
},
"last_updated" : "2017-04-09T01:54:33.764573"
}
}
我只想要存储在数组中的字段值。
fields_want = ['name','Marks']
输出应该像 - > {“name”:“Mayank”,“Marks”:“80”}
Elasticsearch dsl文档对我来说很难理解。 https://elasticsearch-dsl.readthedocs.io/en/latest/search_dsl.html#
Dsl代码: -
client = Elasticsearch()
s = Search(using=client, index="data") \
.query("match", _type="users") \
.query("match", _id=15)
response = s.execute()
for hit in s:
print(hit.data)
从这段代码中我可以得到数据字段下的整个json对象。
有人可以在这里指导我吗?
答案 0 :(得分:0)
它解决了。 我使用了源过滤器来获得嵌套输出。
client = Elasticsearch()
s = Search(using=client, index="data") \
.query("match", _type="users") \
.query("match", _id=15) \
.source(['data.Name', 'data.Marks'])
response = s.execute()
print response
输出 -
{u'Name': u'Mayank', u'Marks': u'80'}