1

嗨,我想使用 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 对象。

有人可以在这里指导我吗?

4

1 回答 1

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'}
于 2017-04-10T19:57:55.320 回答