Elasticsearch - 获取嵌套字段

7
我希望仅获取嵌套字段,但无法实现,因为它们不是叶子字段。
GET index/_search
{
    "size": 10,
    "fields": [
       "nested_fields"
    ]
}

错误 : "reason": "字段 [nested_fields] 不是叶子字段"

我尝试了以下操作,但无法匹配嵌套对象中的每个id和name。

GET index/_search
    {
        "size": 10,
        "fields": [
           "nested_fields.id",
           "nested_fields.name"
        ]
    }

结果:

"fields": {
               "events.id": [
                  "13342",
                  "24232",
                  "25534",
                  "63454"
               ],
               "events.name": [
                  "R1413",
                  "R1414",
                  "R1415",
                  "R1416",
               ]
            }

以下是我期望的结果:

fields" : {
  "evets" : {
      "id" : "234234",
      "name" : "RP1524"
   },
    .... so on
}
1个回答

12

如果您没有特定的查询应该匹配嵌套字段,您可以这样做:

GET /index/_search
{
  "size": 10,
  "_source": ["nested_fields.id", "nested_fields.name"]
}
如果您还有一个嵌套的查询,并且想要返回匹配的嵌套文档,可以使用这种方法(使用inner_hits):
{
  "query": {
    "nested": {
      "path": "nested_fields",
      "query": {"match_all": {}}, 
      "inner_hits": {}
    }
  }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接