2015-01-09 3 views
1

Как присоединиться к родительскому и дочернему объектам в elasticsearch? Например мое отображение:Как присоединиться к родительскому и дочернему объектам в elasticsearch

{ 
    "street":{ 
     "properties":{ 
     "street_name":{ 
      "type":"string" 
     } 
     } 
    } 
} 

и

{ 
    "address":{ 
     "_parent":{ 
     "type":"street" 
     }, 
     "properties":{ 
     "house_number":{ 
      "type":"string" 
     } 
     } 
    } 
} 

данных:

{"_type":"street","_id":"AUrLQH9ZcB6int_hskH3","_source":{"street_name":"Street"}} 
{"_type":"address","_id":"AUrLQH_XcB6int_hskH4","_source":{"house_number":"10"}} 

Как я могу получить аналогичный результат в одном запросе:

{ 
    "_type":"address", 
    "_id":"AUrLQH_XcB6int_hskH4", 
    "house_number":"10", 

    "street_name":"Street" 

} 

Конечно, для одного элемента я могу присоединиться к типам в приложении, но что делать с большими списками? Спасибо!

ответ

2

Может быть что-то вроде этого, не думаю, что есть способ группирования их красиво:

GET /postal_codes/street/_search?search_type=count 
{ 
    "aggs": { 
    "street": { 
     "terms": { 
     "field": "street_name" 
     }, 
     "aggs": { 
     "addresses": { 
      "children": { 
      "type": "address" 
      }, 
      "aggs": { 
      "number": { 
       "terms": { 
       "field": "address.house_number" 
       } 
      } 
      } 
     } 
     } 
    } 
    } 
} 
Смежные вопросы