2016-07-29 2 views
2

Я хочу получить только вложенные поля, но не могу, так как это не поля листа.Elasticsearch - получить вложенные поля

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

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

Я попытался ниже, но не могу соответствовать каждому идентификатору и имя в вложенном объекте.

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

первый один работает для меня. благодаря :) –

Смежные вопросы