2016-07-29 161 views
2

我想只获取嵌套字段,但不能,因为它不是叶字段。Elasticsearch - 获取嵌套字段

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

ERROR : "reason": "field [nested_fields] isn't a leaf field"

下面我试过,但不能在嵌套的对象每个ID和名称相匹配。

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 
} 

回答

4

如果不具备一定的查询应该以某种方式相匹配的嵌套字段,你可以做到这一点像这样:

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

如果你也有一个nested查询,并要返回匹配的嵌套的文档,你可以做这样的(与inner_hits):

{ 
    "query": { 
    "nested": { 
     "path": "nested_fields", 
     "query": {"match_all": {}}, 
     "inner_hits": {} 
    } 
    } 
} 
+0

第一个为我工作。谢谢 :) –

相关问题