index.search.limit と index.max_result_window で "Result window is too large." エラーを軽減する

Liferayの内部で検索エンジンクエリを利用するすべての機能において、デフォルトで最大10,000件の検索結果が返されます。これは、検索バーや検索ツールバーでの検索、検索REST APIの使用、そしてLiferayの検索フレームワークと検索エンジンクエリを活用するその他の機能に適用されます。

ページネーションで結果を閲覧する場合、ユーザーが結果の最大制限を超えて結果ページに移動しようとすると、空白のページが表示され、例外が記録されます:"Result window is too large."

 

解決

LiferayとElasticsearchの設定で制限を変更することができます。 両方で同じ値を使うようにしてください:

  • Liferay:index.search.limitポータルプロパティを設定するか(portal-ext.propertiesなど)、対応するDocker環境変数LIFERAY_INDEX_PERIOD_SEARCH_PERIOD_LIMITを使用します。
  • Elasticsearch:
    • 7.4 GA/Update 72+: Elasticsearch 7 のシステム設定で最大結果ウィンドウを設定する (またはcom.liferay.portal.search.elasticsearch7.configuration.ElasticsearchConfiguration.config:indexMaxResultWindow="<new-value>"を経由)
    • 7.0-7.4:
    • コネクタ設定のインデックス構成の追加を使って、Liferay の システム設定から Elasticsearch のindex.max_result_windowを設定します。
    • Elasticの 動的インデックス設定を参照してください。このプロパティの詳細については、Liferay 側から再インデックスを実行することなく、Elasticsearch に直接設定する方法などを参照してください。

より多くの結果を返す

10,000を超える結果を許可するとパフォーマンスが低下しますが、必要に応じて最大結果サイズを増やすことができます。

結果の最大サイズを大きくするには

  1. Liferayのportal-ext.propertiesのindex.search.limitを必要な量まで増やします:
    index.search.limit=15000
  2. 設定を適用するためにLiferayを再起動してください。
  3. Elasticsearch の `index.max_result_window` を設定します。

    1. コントロールパネル → システム設定 → 検索 → Elasticsearch 7

    2. 最大結果ウィンドウを希望する量に設定し、保存する。

    Liferay 7.4 u72より前のバージョンでは、代わりにインデックス構成の追加の下に設定を追加します。

    1. コントロールパネル → システム設定 → 検索 → Elasticsearch 7 へ移動
    2.追加のインデックス構成で以下を追加して保存
    {
    "index.max_result_window" : "15000"
    }.
  4. 設定を保存した後、増加が必要なインデックスの完全な再インデックスを実行します。

    コントロールパネル→設定→検索 のインデックス管理タブから、すべての検索インデックスと全てのスペルチェックインデックスの再インデックスを実行します。

    再インデックスを回避するには、Elasticsearch の elasticsearch.yml にindex.max_result_window. 15000 を追加して Elasticsearch サーバを再起動するか、curl コマンドで動的にこの設定を適用します:Elasticsearch の elasticsearch.yml に index.max_result_window:15000 を追加して Elasticsearch サーバーを再起動するか、curl コマンドで動的にこの設定を適用します。

    curl -XPUT "http://localhost:9200/<index_name>/_settings" -d '{ "index" : { "max_result_window" : "15000" }' -H "Content-Type" : { "max_result_window" : "15000" }.}' -H "Content-Type: application/json"

    Elasticのドキュメントを参照してください。

注:表示権限は動的に継承のため、検索後の権限フィルタリングで結果が削除された場合、表示される最深検索結果が設定された制限より少なくなる場合があります。また、 パーミッション・フィルタリングされた検索結果の正確なカウントのしきい値と検索クエリ結果のウィンドウの上限値の最大値もこの設定に制限されます。

この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています