assetEntryLocalServiceUtil.getEntriesメソッドで実行されるAssetEntryテーブルへのクエリによるデータベースのスループット問題
How To articles are not official guidelines or officially supported documentation. They are community-contributed content and may not always reflect the latest updates to Liferay DXP. We welcome your feedback to improve How To articles!
While we make every effort to ensure this Knowledge Base is accurate, it may not always reflect the most recent updates or official guidelines.We appreciate your understanding and encourage you to reach out with any feedback or concerns.
legacy-article
learn-legacy-article-disclaimer-text
ご覧のページは、お客様の利便性のために一部機械翻訳されています。また、ドキュメントは頻繁に更新が加えられており、翻訳は未完成の部分が含まれることをご了承ください。最新情報は都度公開されておりますため、必ず英語版をご参照ください。翻訳に問題がある場合は、こちら までご連絡ください。
問題
assetEntryLocalServiceUtil.getEntries メソッドを呼び出すカスタム開発があります:
AssetEntryQuery assetEntryQuery = new AssetEntryQuery(); assetEntryQuery.setAnyCategoryIds(new long[] { categoriaMesVistos }); assetEntryQuery.setOrderByCol1("priority"); リスト<AssetEntry> assetEntryList = AssetEntryLocalServiceUtil.getEntries(assetEntryQuery)
このメソッドはAssetEntryテーブルへのクエリを実行するため、データベースのスループットに問題が生じる。
どうすれば避けることができますか?
環境
解像度
AssetEntryLocalServiceUtil.getEntriesの呼び出しを、Elasticsearchインデックスを使用する同等の_assetHelper.searchAssetEntriesメソッドに置き換える必要があります。
アセットパブリッシャーでは、このコード:com.liferay.asset.publisher.web.internal.util.AssetPublisherHelperImplクラスのgetAssetEntriesメソッドは 、_isSearchWithIndexの 結果に応じてAssetEntryLocalServiceUtil.getEntriesと _assetHelper.searchAssetEntriesの両方を使用します。
AssetEntryLocalServiceUtil.getEntriesはデータベースレベルでパフォーマンスの問題を引き起こす可能性があるため、一般的にはElasticsearchに対してクエリを実行する_assetHelper.searchAssetEntriesメソッドを使用することが望ましいです。
リンク先の例でわかるように、どちらのメソッドもassetEntryQueryオブジェクトを受け取るので、_assetHelper.searchAssetEntriesを使用するようにコードを適応させるのは簡単です:
assetHelper.searchAssetEntriesを呼び出し、BaseModelSearchResult<AssetEntry> 型のオブジェクトを返します。 このメソッドの呼び出し方にはいくつかの例がある:
BaseModelSearchResult<AssetEntry>オブジェクトを使用して、baseModelSearchResult.getBaseModels() メソッドを呼び出し、AssetEntries のリストを返します。
これらの変更により、このクエリをデータベースに対して実行することを避け、代わりにElasticsearchに対して実行することになります。
did-this-article-resolve-your-issue