6

の合計を示す のヒストグラムを生成したいと思いorderます。order_revisionpricequantity

{
  "_type": "order",
  "_id": "1063220887",
  "_score": 1,
  "_source": {
    "order_id": "1063220887",
    "product_id": "10446350",
    "timestamp": 1462713302000
  }
}

{
  "_type": "order_revision",
  "_id": "10234234",
  "_parent": "1063220887",
  "_source": {
    "price": 9,
    "quantity": 3,
    "revision": 361,
    "timestamp": 1462712196000
  }
}

次の集計は基本的に機能しますが、既存のすべてのリビジョンの合計を返します。

  {
    "aggs": {
      "orders": {
        "filter": {
          "has_parent": {
            "parent_type": "order"
          }
        },
        "aggs": {
          "quantity_per_price": {
            "histogram": {
              "field": "price",
              "interval": 1
            }
            "aggs": {
              "sum": {"field": quantity"}
            }
          }
        }
      }
    }
  }

最終バージョンでは、すべての注文の最新リビジョン (最上位/最新) のquantityフィールドの合計のみを返す必要があります。グループ化を行い、最新の子のみを選択するような集計を作成する方法が完全にはわかりません。また、この親子構造がこのデータをモデル化するのに最適かどうかもわかりません。timestamporder_id

4

1 に答える 1

0

最も簡単な実装は、最新のリビジョンを"latest": trueドキュメントにタグ付け ( ) することです。次に、クエリまたは集計を追加してfilter、最新のリビジョンのみをフィルター処理するという単純な問題になります。

于 2016-12-15T05:06:47.903 に答える