概要
システムが精密ソートを実行するか、取得したドキュメントを分散させた後、最終的なクエリ結果をキャッシュするために、サーチャーキャッシュ機能を使用できます。サーチャーキャッシュ機能を有効にすると、システムは同じデータに対して粗ソートと精密ソートを繰り返し実行する必要がなくなるため、粗ソートと精密ソートの操作回数を減らし、各サーチャーワーカーのクエリパフォーマンスを向上させることができます。ビジネス要件に基づいてキャッシュポリシーを作成できます。たとえば、クエリの戻り値をキャッシュするかどうかを指定したり、キャッシュされたアイテムのキャッシュ期間を指定したりできます。サーチャーワーカーの設定を構成したり、クエリステートメントを作成したりするときに、これらのポリシーを有効または無効にできます。OpenSearch Retrieval Engine Editionは、ビジネス要件に基づいてキャッシュポリシーを作成するために使用できるプラグインを提供します。
構文
{
"cache" : {
}
}パラメーター:
enabled: サーチャーキャッシュ機能を有効にするかどうかを指定します。有効な値: true および false。
cache_key: リクエストのキャッシュキー。キャッシュキーを生成し、クエリステートメントでキャッシュキーを指定できます。キャッシュキーはキャッシュヒット率に影響を与える可能性があります。高いキャッシュヒット率を確保するために、使用シナリオとビジネス要件に基づいてキャッシュキーを指定できます。キャッシュキーを指定しない場合、システムはクエリステートメントに基づいてハッシュ値を計算し、そのハッシュ値をキャッシュキーとして使用します。
expire_time: キャッシュされたクエリ結果アイテムのキャッシュ期間。このパラメーターは、キャッシュされたデータの適時性を確保するために使用されます。単位: 秒。ビジネス要件に基づいてキャッシュ期間を指定できます。アプリケーションにデータの適時性に関する高い要件がない場合、またはクエリ対象のデータに対して増分更新が実行されない場合は、expire_time パラメーターを無視できます。デフォルトでは、キャッシュされたアイテムは期限切れにならず、システムは最低使用頻度(LRU)アルゴリズムに基づいてキャッシュされたアイテムを削除します。OpenSearch Retrieval Engine Editionでサポートされている式をexpire_timeパラメーターの値として指定できます。たとえば、パラメーターを属性式、関数式、仮想属性式、または属性式、関数式、仮想属性式を含む算術式に設定できます。指定された式の戻り値はUINT32型である必要があります。戻り値がUINT32型でない場合、システムはエラーを報告します。サーチャーキャッシュコンポーネントは、クエリの結果をキャッシュする前に、expire_timeパラメーターで指定した式に基づいてクエリ対象の各ドキュメントのキャッシュ期間を計算し、計算された最小値をすべてのキャッシュされたアイテムのキャッシュ期間として使用します。
current_time: cache句でcurrent_timeパラメーターを指定した場合、サーチャーキャッシュコンポーネントはexpire_timeパラメーターとcurrent_timeパラメーターの値を比較して、キャッシュされたアイテムが期限切れかどうかを判断します。cache句でcurrent_timeパラメーターを指定しない場合、サーチャーキャッシュコンポーネントはexpire_timeパラメーターの値を現在のシステム時刻と比較して、キャッシュされたアイテムが期限切れかどうかを判断します。
cache_filter: キャッシュされたアイテムをフィルタリングするために使用される条件。フィルタリング構文は、標準のフィルタリング構文と同じです。
cache_doc_num_limit: キャッシュできるクエリ対象ドキュメントの最大数。高いキャッシュヒット率を確保するために、各クエリステートメントでこのパラメーターを指定します。デフォルト値は[200, 3000]です。[100, 200, 300]などの複数の階層を含む値を指定できます。たとえば、cache_doc_num_limitパラメーターを[280, 780]に設定すると、システムは次のキャッシュポリシーに基づいてデータをキャッシュします。required_topKパラメーターの値が280以下の場合、システムは280個のドキュメントをキャッシュします。required_topKパラメーターの値が280より大きく780以下の場合、システムは780個のドキュメントをキャッシュします。required_topKパラメーターの値が780より大きい場合、システムはrequired_topKパラメーターの値に基づいてドキュメントをキャッシュします。
refresh_attributes: キャッシュヒット時にシステムがキャッシュに更新する必要がある属性フィールド。スキーマに含まれる属性フィールドのみを指定できます。virtual_attribute句で指定された属性フィールドはサポートされていません。キャッシュ期間が長く、特定の属性フィールドの値が更新された場合、キャッシュされた属性フィールドの値が古くなっている可能性があります。refresh_attributesパラメーターを指定することで、システムが属性フィールドの最新値をキャッシュするようにすることができます。これは、キャッシュされた属性フィールド値の高い適時性を確保するのに役立ちます。
例:
{
"cache" : {
"enabled" : true,
"cache_key" : 1234567890,
"expire_time" : "now()+300",
"current_time" : 1235,
"cache_filter" : "a > 10",
"cache_doc_num_limit" : [200, 3000],
"refresh_attributes": ["price", "sell_count"]
}
}使用上の注意
cache句はオプションです。
システムがキャッシュできるドキュメントの数は、サーチャーワーカーのrequired_topKパラメーターの値に基づいています。required_topKパラメーターの値は、次の式に基づいて計算された値によって異なります: start + hit. アプリケーションで複数のサーチャーワーカーを使用している場合、クエリ結果サーチャー(QRS)ワーカーは、searcher_return_hitsパラメーターの値に基づいて、各サーチャーワーカーが返すことができるドキュメントの数を制限します。この場合、required_topKパラメーターの値は次の式に基づいて計算されます: min(start + hit, searcher_return_hits)。
サーチャーキャッシュコンポーネントは、精密ソートが実行された後に結果をキャッシュします。十分な結果がキャッシュされるようにするには、精密ソートが実行された後にシステムが特定の数の結果を返すようにしてください。rerank scorerでrank_sizeパラメーターを指定するか、config句でrerank_sizeパラメーターを指定できます。