2

Elasticsearch がバケットによるサブ集計をサポートしていることは承知しています (バケット集計では、バケットまたはメトリクスのサブ集計を使用できます)。メトリクス集計ではサブ集計はできません。それは理にかなっているかもしれませんが、これがユースケースです。

親として用語集約があります。そして、別のterm集約をその子として使用します。childtermには type の子集約がありtop_hitsます。top_hitsメトリック集計であるため、子集計を取ることはできません。avg次に、集計をミックスに含める必要があります。与えられたのは、メトリック集計であるためtop_hits、集計ツリーの最後の集計でありavg、子として持つことはできません。top_hits

以下は、望ましい集約レベルです。(もちろん、これtop_hitsはメトリック集計であり、集計にも当てはまりavgます。

{
  "aggregations": {
    "top_makes": {
      "terms": {
        "field": "make"
      },
      "aggregations": {
        "top_models": {
          "terms": {
            "field": "model"
          },
          "aggregations": {
            "top_res": {
              "top_hits": {
                "_source": {
                  "include": [
                    "model",
                    "color"
                  ]
                },
                "size": 10
              }
            }
          }
        }
      },
      "aggregations": {
        "avg_length": {
          "avg": {
            "field": "vlength"
          }
        }
      }
    }
  }
}

これに対処するための回避策または最善の方法は何ですか?

4

1 に答える 1

2

私はこれがうまくいくと思います、確認してください..

{
  "aggregations": {
    "top_makes": {
      "terms": {
        "field": "make"
      },
      "aggregations": {
        "top_models": {
          "terms": {
            "field": "model"
          },
          "aggregations": {
            "top_res": {
              "top_hits": {
                "_source": {
                  "include": [
                    "model",
                    "color"
                  ]
                },
                "size": 10
              }
            }
          },
          "avg_length": {
            "avg": {
              "field": "vlength"
            }
          }
        }
      }
    }
  }
}

ポイントは、親アグリゲーションに対して 1 つ以上の兄弟 (サブアグリゲーション) を持つことができるということです。

于 2014-07-25T09:28:39.680 に答える