2016-03-28 2 views
0

Вот мой тип документа: транспортные средства - это вложенный тип.Elasticsearch Агрегация вложенных выходных ковшей

документ1 -

{ 
    "customerAge": 30, 
    "vehicles": [ 
    { 
     "brand": "Altima", 
     "year": 2005 
    }, 
    { 
     "brand": "Corolla", 
     "year": 2006 
    }, 
    { 
     "brand": "Camry", 
     "year": 2005 
    } 
    ] 
} 

документ2 -

{ 
    "customerAge": 50, 
    "vehicles": [ 
    { 
     "brand": "Altima", 
     "year": 2009 
    }, 
    { 
     "brand": "Corolla", 
     "year": 2010 
    } 
    ] 
} 

Я пытаюсь создать ведра марки автомобиля и рассчитать средние клиентов возраста. Таким образом, в этом примере средний возраст потребителя «Altima» составит 40.

Я пробовал этот запрос, и средние значения равны нулю.

Может ли кто-нибудь помочь, что я делаю неправильно?

{ 
    "size": 0, 
    "aggs": { 
     "nestedtop": { 
     "nested": { 
      "path": "vehicles" 
     }, 
     "aggs": { 
      "3cc601456260531278": { 
       "terms": { 
        "field": "vehicles.brand" 
       }, 
       "aggs": { 
        "expfilter_yromb0g90dmjx20529": { 
        "filter": { 
         "match_all": {} 
        }, 
        "aggs": { 
         "yromb0g90dmjx20529": { 
          "min": { 
           "field": "customerAge" 
          } 
         } 
        } 
        } 
       } 
      } 
     } 
     } 
    } 
} 

ответ

0

Вложенная агрегация может иметь доступ только к полям внутри вложенного документа. Он не может видеть поля в корневом документе или в другом вложенном документе. Однако мы можем выйти из вложенной области обратно в родительский с reverse_nested aggregation.

{ 
    "size": 0, 
    "aggs": { 
     "nestedtop": { 
      "nested": { 
       "path": "vehicles" 
      }, 
      "aggs": { 
       "by_name": { 
        "terms": { 
         "field": "vehicles.brand" 
        }, 
        "aggs": { 
         "age_reverse": { 
          "reverse_nested": {}, 
          "aggs": { 
           "avg_age": { 
            "avg": { 
             "field": "customerAge" 
            } 
           } 
          } 
         } 
        } 

       } 
      } 
     } 
    } 
} 
+0

Запрашиваемая стоимость обратная_загрузка? – user3658423

+0

Я не думаю, что это так. Он просто меняет вложенную область на родительский doc – Rahul

+0

решение работает благодаря! – user3658423