2017-11-12 6 views
2

市とホームの種類は、次の文書マッピングでネストされた2つのオブジェクトです:elasticsearchで2つのネストされた集計を行う方法は?

"mappings" : { 
    "home_index_doc" : { 
    "properties" : { 
     "city" : { 
     "type" : "nested", 
     "properties" : { 
      "country" : { 
      "type" : "nested", 
      "properties" : { 
       "name" : { 
       "type" : "text" 
       } 
      } 
      }, 
      "name" : { 
      "type" : "keyword" 
      } 
     } 
     }, 
     "home_type" : { 
     "type" : "nested", 
     "properties" : { 
      "name" : { 
      "type" : "keyword" 
      } 
     } 
     }, 
     ... 
    } 
    } 
} 

私は以下の集約を行うにしようとしています: すべての現在の文書を取り、都市ごとにすべてのhome_typesを表示します。

私はそれはのようになります想像:gazzilionのaproachesとの組み合わせを試した後

"aggregations": { 
    "all_cities": { 
    "buckets": [ 
     { 
     "key": "Tokyo", 
     "doc_count": 12, 
     "home_types": { 
      "buckets": [ 
       { 
        "key": "apartment", 
        "doc_count": 5 
       }, 
       { 
        "key": "house", 
        "doc_count": 12 
       } 
      ] 
     } 
     }, 
     { 
     "key": "New York", 
     "doc_count": 1, 
     "home_types": { 
      "buckets": [ 
       { 
        "key": "house", 
        "doc_count": 1 
       } 
      ] 
     } 
     } 
    ] 
    } 
} 

、私はKibanaでそこまでそれを作った:

GET home-index/home_index_doc/_search 
{ 
    "size": 0, 
    "aggs": { 
    "all_cities": { 
    "nested": { 
     "path": "city" 
     }, 
     "aggs": { 
     "city_name": { 
      "terms": { 
      "field": "city.name" 
      } 
     } 
     } 
    }, 
    "aggs": { 
     "all_home_types": { 
     "nested": { 
      "path": "home_type" 
     }, 
     "aggs": { 
      "home_type_name": { 
      "terms": { 
       "field": "home_type.name" 
      } 
      } 
     } 
     } 
    } 
    } 
} 

と私は次の例外を取得:

"type": "unknown_named_object_exception", 
    "reason": "Unknown BaseAggregationBuilder [all_home_types]", 

答えて

5

oを飛ばすにはreverse_nestedを使用する必要がありますf cityネストしたタイプをルートレベルに戻し、home_typeネストされたタイプの別のnestedアグリゲーションを実行します。基本的には、このように:

{ 
    "size": 0, 
    "aggs": { 
    "all_cities": { 
     "nested": { 
     "path": "city" 
     }, 
     "aggs": { 
     "city_name": { 
      "terms": { 
      "field": "city.name" 
      }, 
      "aggs": { 
      "by_home_types": { 
       "reverse_nested": {}, 
       "aggs": { 
       "all_home_types": { 
        "nested": { 
        "path": "home_type" 
        }, 
        "aggs": { 
        "home_type_name": { 
         "terms": { 
         "field": "home_type.name" 
         } 
        } 
        } 
       } 
       } 
      } 
      } 
     } 
     } 
    } 
    } 
} 
関連する問題