2

「承認済み」、「リリース済み」、またはクローズのいずれかのステータスを持つすべてのドキュメントの数を返す次のリクエストがあります。

{
  "size": 0,
  "query": {
    "bool": {
      "must": [
        {
          "query_string": {
            "query": "*",
            "analyze_wildcard": true
          }
        }
      ],
      "must_not": []
    }
  },
  "aggs": {
    "slices": {
      "terms": {
        "field": "status.raw",
        "include": {
          "pattern": "Accepted|Released|Closed"
        }
      }
    }
  }
}

私の場合、応答は次のとおりです。

 "buckets": [
        {
          "key": "Closed",
          "doc_count": 2216
        },
        {
          "key": "Accepted",
          "doc_count": 8
        },
        {
          "key": "Released",
          "doc_count": 6
        }
      ]

ここで、それらすべてを 1 つのフィールドに追加したいと思います。パイプライン集計を使用してみましたが、次の sum_bucket も試しました (これはマルチバケットでのみ機能するようです)。

"total":{
    "sum_bucket":{
        "buckets_path": "slices"
    }
}

これで私を助けることができる人はいますか?

4

3 に答える 3

4

sum_bucketあなたの既存の集計:

  "aggs": {
    "slices": {
      "terms": {
        "field": "status.raw",
        "include": {
          "pattern": "Accepted|Released|Closed"
        }
      }
    },
    "sum_total": {
      "sum_bucket": {
        "buckets_path": "slices._count"
      }
    }
  }
于 2016-11-03T14:04:26.487 に答える
1

filters代わりに集計を使用し、必要なすべてのバケットを次のように定義します。

{
  "size": 0,
  "query": {
    "bool": {
      "must": [
        {
          "query_string": {
            "query": "*",
            "analyze_wildcard": true
          }
        }
      ],
      "must_not": []
    }
  },
  "aggs": {
    "slices": {
      "filters": {
        "filters": {
          "accepted": {
            "term": {
              "status.raw": "Accepted"
            }
          },
          "released": {
            "term": {
              "status.raw": "Released"
            }
          },
          "closed": {
            "term": {
              "status.raw": "Closed"
            }
          },
          "total": {
            "terms": {
              "status.raw": [
                "Accepted",
                "Released",
                "Closed"
              ]
            }
          }
        }
      }
    }
  }
}
于 2016-11-03T14:01:32.560 に答える
0

value_countサブ集計でカウントを追加してから、 sum_bucket パイプライン集計を使用できます

{
  "aggs": {
    "unique_status": {
      "terms": {
        "field": "status.raw",
        "include": "Accepted|Released|Closed"
      },
      "aggs": {
        "count": {
          "value_count": {
            "field": "status.raw"
          }
        }
      }
    },
    "sum_status": {
      "sum_bucket": {
        "buckets_path": "unique_status>count"
      }
    }
  },
  "size": 0
}
于 2016-11-03T14:05:01.103 に答える