すべてのプロダクト
Search
ドキュメントセンター

Tablestore:クエリ後のフィルター

最終更新日:Nov 29, 2025

クエリ後のフィルター (Filter) は、Tablestore 多次元インデックスの機能であり、クエリ結果に追加のフィルターを適用します。これにより、内部のクエリ オプティマイザーを手動でコントロールし、特定のクエリ条件を最終ステージで強制的に実行させることができます。この機能を正しく使用することで、クエリのパフォーマンスを大幅に向上させることができます。

説明

クエリ後のフィルター機能を使用するには、Tablestore のテクニカルサポートに連絡してこの機能を有効にする必要があります。

機能紹介

クエリ後のフィルター (Filter) は、標準のクエリとは異なるクエリ構文を使用します。これは、クエリステージの後、集計および GroupBy ステージの前に実行されます。

主な目的は、クエリフローを手動でコントロールしてクエリのパフォーマンスを向上させることです。ヒット数の多いクエリ条件をクエリステージからフィルターステージに移動させることで、クエリのパフォーマンスを大幅に向上させることができます。

  • クエリステージ:範囲クエリ、term クエリ、あいまい検索、ジオクエリなど、すべての多次元インデックスクエリタイプとすべてのデータ型をサポートします。このステージでは、指定された条件に一致する初期データをインデックスから取得します。

  • フィルターステージ:クエリステージからの結果をフィルター処理します。このステージでは、キーワード、Long、Double のデータ型のみがサポートされます。サポートされるクエリタイプには、term クエリ、範囲クエリ、exists クエリが含まれます。

他のフィルタリングメソッドとの比較

Elasticsearch の post_filter との違い

両者の主な違いは、その効果の範囲です:

  1. Tablestore における Filter の実行順序: クエリ → フィルター → 集計/TotalCount

  2. Elasticsearch における post_filter の実行順序: クエリ → 集計/TotalCount → PostFilter

Tablestore BoolQuery のフィルターとの違い

BoolQuery のフィルターは must 句に似ており、クエリ自体のコンポーネントです。

制限事項

  • クエリ後のフィルターは、多次元インデックスクエリと併用する必要があります。サポートされているクエリタイプは、TermQuery、TermsQuery、RangeQuery、ExistsQuery、および BoolQuery です。

  • BoolQuery の場合、`mustQueries`、`mustNotQueries`、および `shouldQueries` 句はサポートされますが、`filterQueries` 句はサポートされません。

  • フィルター処理は、`enableSortAndAgg` プロパティが有効になっているキーワード、Long、および Double フィールドでのみサポートされます。

  • クエリ後のフィルターは、重みの設定をサポートしていません。

使用方法

クエリ後のフィルターは、Java SDK および Go SDK で使用できます。