概要
1 つの検索クエリで数万件のドキュメントが取得される場合があります。しかし、必要な情報を取得するために、取得したすべてのドキュメントを表示する必要はない場合があります。取得したドキュメントの統計を表示したい場合は、集計句を使用して統計を取得できます。
構文
集計句の構文:
group_key:field, range:number1~number2, agg_fun:func1#func2, agg_filter:filter_clause, max_group:numberパラメータ:
パラメータ | タイプ | 必須 | 有効な値 | デフォルト値 | 説明 |
group_key:field | field: 属性フィールド | はい | INT、LITERAL、INT_ARRAY、または LITERAL_ARRAY 型のフィールド。属性フィールドが INT_ARRAY または LITERAL_ARRAY 型で、配列内の項目が繰り返される場合、その出現回数がカウントされます。 | 統計を収集するフィールドの名前を指定します。このパラメータには属性フィールドを設定する必要があります。 | |
agg_fun | はい | 組み込み関数: count(id)、sum(id)、max(id)、min(id)、および distinct_count(id)。 | func には、count()、sum(id)、max(id)、min(id)、または distinct_count(id) といった組み込み関数を設定して、ドキュメント数、フィールド値の合計、フィールドの最大値、フィールドの最小値、またはフィールド内の一意の値の数を計算できます。複数の関数を同時に使用する場合は、シャープ記号 (#) で区切ります。sum()、max()、または min() 関数では、基本的な算術演算子を使用して複数のフィールドを参照できます。 | ||
range | いいえ | Number 1 と Number 2 の間の値、および Number 2 より大きい値。STRING 型のフィールドの値は、統計収集のために集計できません。 | 値の範囲に基づいて統計を生成します。このパラメータはデータ分布に使用できます。集計句では、range パラメータを 1 つのみ指定できます。 | ||
agg_filter | いいえ | 指定された条件を満たすドキュメントを取得します。 | |||
agg_sampler_threshold | INT | いいえ | ドキュメントサンプリングのしきい値を指定します。取得したドキュメントのうち、ランクがしきい値より高いドキュメントは順番に統計にカウントされますが、ランクがしきい値より低いドキュメントは agg_sampler_step パラメータの値に基づいてサンプリングされます。 | ||
agg_sampler_step | INT | いいえ | サンプリングステップサイズを指定します。この値は、agg_sampler_threshold パラメータで指定されたしきい値よりランクが低いドキュメントをサンプリングする間隔を示します。sum() および count() 関数によって収集される統計は、次のように処理されます。システムは、ランクがしきい値より低いドキュメントの統計にサンプリングステップサイズを乗算して推定統計を生成します。次に、システムは推定統計をランクがしきい値より高いドキュメントの統計に追加して最終統計を生成します。 | ||
max_group | INT | いいえ | 1000 | 返されるキーアイテムペアの最大数を指定します。 |
使用上の注意
集計句はオプションです。
前述のパラメータで参照するフィールドは、アプリケーションスキーマを定義する際に 属性フィールド として設定する必要があります。
集計句の結果は、検索を実行するノードであるファセットノードに返されます。agg_fun パラメータで指定した sum() や count() などの関数は、統計を表示します。
集計句で複数の group_key パラメータを指定することで、異なるフィールドの統計を同時に収集できます。各指定はセミコロン (;) で区切ります。例:
group_key:field1,agg_fun:func1;group_key:field2,agg_fun:func2。集計句の結果は ファセット ノードに返されます。結果に統計を表示するには、config 句のフォーマットを full JSON に設定する必要があります。
distinct_count 関数は専用クラスターでのみサポートされています。この関数を使用するには、kvpairs 句に
enable_accurate_statisticsパラメータを追加して true に設定する必要があります。この機能を使用した場合、システムはクエリのファセットノード内の統計のみを返します。count()、max()、min()、および sum() 関数は専用クラスターでサポートされています。これらの関数を使用するには、kvpairs 句に
enable_accurate_statisticsパラメータを追加して true に設定する必要があります。システムは 最大 100,000 件のドキュメントの正確な統計を返すことができます。指定した条件に一致するドキュメント数が 100,000 件を超える場合、エンジンのパフォーマンス上の制限により、返される統計が不正確になる可能性があります。専用クラスターの場合、kvpairs 句に
enable_accurate_statisticsパラメータを追加して true に設定することで、より正確な統計を返すことができます。
例
次のクエリ句を使用して、「浙江大学」を含むドキュメントの統計を取得します。統計は group_id フィールドと company_id フィールドに基づいて計算されます。group_id フィールドの統計には、price フィールドの合計値と最大値が含まれます。company_id フィールドの統計には、各企業の出現回数が含まれます。
query=default:'Zhejiang University'&&aggregate=group_key:group_id,agg_fun:sum(price)#max(price);group_key:company_id,agg_fun:count()返却結果のサンプル:
{ status: "OK", result: { searchtime: 0.015634, total: 5, num: 1, viewtotal: 5, items: [ // 返却結果。 { ... } ], facet: [ { key: "group_id", items: [ { value: 43, sum: 81, max: 20, }, { value: 63, sum: 91, max: 50, }, ], }, { key: "company_id", items: [ { value: 13, count: 4, }, { value: 10, count: 1, }, ], }, ], }, errors: [ ], tracer: "", },次のクエリ句を使用して、group_id フィールドに基づいて「浙江大学」を含むドキュメントの統計を取得します。price フィールドの合計値が計算されます。ランクが 10,000 より低いドキュメントはサンプリングされます。サンプリングステップサイズは 5 に設定されています。
query=default:'Zhejiang University'&&aggregate=group_key:group_id,agg_fun:sum(price), agg_sampler_threshold:10000, agg_sampler_step:5次のクエリ句を使用して、group_id フィールドに基づいて「浙江大学」を含むドキュメントの統計を取得します。集計句は、group_id フィールドの値が 10 から 50 の範囲にあるドキュメントの数をカウントします。
query=default:'Zhejiang University'&&aggregate=group_key:group_id,agg_fun:count(),range:10~50次のクエリ句を使用して、group_id フィールドに基づいて「浙江大学」を含むドキュメントの統計を取得します。create_timestamp フィールドの値が 1423456781 より大きいドキュメントを対象に、hits フィールドと replies フィールドの合計値の最大値が計算されます。
query=default:'Zhejiang University'&&aggregate=group_key:group_id,agg_fun:max(hits+replies),agg_filter:create_timestamp>1423456781