概要
1 つの検索クエリに基づいて数万件のドキュメントが取得される場合があります。ただし、必要な情報を取得するために、取得したすべてのドキュメントを表示する必要がない場合があります。取得したドキュメントの統計情報を確認したい場合は、集計句を使用して統計情報を取得できます。
構文
集計句の構文:
group_key:field, range:number1~number2, agg_fun:func1#func2, max_group:number2,
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 | いいえ | 数値 1 と数値 2 の間の値、および数値 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
.集計句の結果はfacetノードに返されます。戻り値の結果に統計を表示するには、config 句の形式を完全な JSON に設定する必要があります。
distinct_count 関数は、専用クラスターでのみサポートされています。この関数を使用するには、
enable_accurate_statistics
パラメーターを kvpairs 句に追加し、このパラメーターを true に設定する必要があります。この機能を使用すると、システムはクエリの facet ノードの統計のみを返します。count()、max()、min()、および sum() 関数は、専用クラスターでサポートされています。これらの関数を使用するには、enable_accurate_statistics パラメーターを kvpairs 句に追加し、このパラメーターを true に設定する必要があります。
システムは最大 100,000 件のドキュメントの正確な統計を返すことができます。指定された条件に一致するドキュメントの数が 100,000 を超える場合、エンジンパフォーマンスの制限により、返される統計が不正確になる可能性があります。専用クラスターの場合、enable_accurate_statistics パラメーターを kvpairs 句に追加し、このパラメーターを true に設定できます。これにより、システムはより正確な統計を返すことができます。
例
次のクエリ句を使用して、「浙江大学」を含むドキュメントの統計を取得します。統計は group_id フィールドと company_id フィールドに基づいて計算されます。group_id フィールドの場合、統計には price フィールドの合計値と最大値が含まれます。company_id フィールドの場合、統計には各企業の出現回数が含まれます。
query=default:'浙江大学'&&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:'浙江大学'&&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:'浙江大学'&&aggregate=group_key:group_id,agg_fun:count(),range:10~50
次のクエリ句を使用して、group_id フィールドに基づいて「浙江大学」を含むドキュメントの統計を取得します。create_timestamp フィールドの値が 1423456781 より大きいドキュメントの中で、hits フィールドと replies フィールドの合計値の最大値が計算されます。
query=default:'浙江大学'&&aggregate=group_key:group_id,agg_fun:max(hits+replies),agg_filter:create_timestamp>1423456781