legacy-knowledge-base
公開されました Jun. 30, 2025

SearchException エンティティコンテンツが長すぎて、設定されたバッファの上限を超え ている。

投稿者

Ricardo Couso

knowledge-article-header-disclaimer-how-to

knowledge-article-header-disclaimer

legacy-article

learn-legacy-article-disclaimer-text

問題

  • カスタム・エンティティのインデックスを再作成しようとすると、バッファの制限によりログに SearchException が発生します:
    com.liferay.portal.kernel.search.SearchException: java.lang.RuntimeException:
    java.io.IOException: entity content is too long [134770594] for the configured buffer limit [104857600] at
    com.liferay.portal.kernel.search.BaseIndexer.reindex(BaseIndexer.java:471) at
    com.liferay.portal.search.internal.background.task.ReindexSingleIndexerBackgroundTaskExecutor.reindex(ReindexSingleIndexerBackgroundTaskExecutor.java:134) at
    com.liferay.portal.search.internal.background.task.BaseReindexBackgroundTaskExecutor.execute(BaseReindexBackgroundTaskExecutor.java:54) at
    [...]
    java.base/java.lang.Thread.run(Thread.java:829)
    Caused by: java.lang.RuntimeException: java.io.IOException: entity content is too long [134770594] for the configured buffer limit [104857600] at
    com.liferay.portal.search.elasticsearch7.internal.search.engine.adapter.document.BulkDocumentRequestExecutorImpl._getBulkResponse(BulkDocumentRequestExecutorImpl.java:198) at
    com.liferay.portal.search.elasticsearch7.internal.search.engine.adapter.document.BulkDocumentRequestExecutorImpl.execute(BulkDocumentRequestExecutorImpl.java:68) at
    com.liferay.portal.search.elasticsearch7.internal.search.engine.adapter.document.ElasticsearchDocumentRequestExecutor.executeBulkDocumentRequest(ElasticsearchDocumentRequestExecutor.java:50) at
    com.liferay.portal.search.engine.adapter.document.BulkDocumentRequest.accept(BulkDocumentRequest.java:33) at
    com.liferay.portal.search.engine.adapter.document.BulkDocumentRequest.accept(BulkDocumentRequest.java:25) at
    com.liferay.portal.search.elasticsearch7.internal.search.engine.adapter.ElasticsearchSearchEngineAdapterImpl.execute(ElasticsearchSearchEngineAdapterImpl.java:81) at
    com.liferay.portal.search.elasticsearch7.internal.ElasticsearchIndexWriter.updateDocuments(ElasticsearchIndexWriter.java:393) at
    com.liferay.portal.search.internal.IndexWriterHelperImpl.updateDocuments(IndexWriterHelperImpl.java:545) at
    my.own.entity.MyOwnEntityIndexer.reindexEntries(MyOwnEntityIndexer.java:151) at
    my.own.entity.MyOwnEntityIndexer.doReindex(MyOwnEntityIndexer.java:120) at
    com.liferay.portal.kernel.search.BaseIndexer.reindex(BaseIndexer.java:465)
    ... 13 more
    Caused by: java.io.IOException: entity content is too long [134770594] for the configured buffer limit [104857600] at
    org.elasticsearch.client.RestClient.extractAndWrapCause(RestClient.java:901) at
    [...]
  • System Settings > Search > Reindex > Indexing Batch Sizes を、 デフォルトの 10000 よ り も 小 さ い値に設定 し て も 、 同 じ エ ラ ーが発生 し ます:
    my.own.entity.MyOwnEntityIndexer=5000

環境

  • Liferay DXP 7.4

解像度

  • カスタム・エンティティにインデックス機能を提供するには、2つの方法があります:
    • com.liferay.portal.kernel.search.BaseIndexer(古い)
    • com.liferay.portal.search.internal.indexer.DefaultIndexer(newer)
  • 上の例は古いものを使っている。
  • System SettingIndexing Batch Sizesは、新しい方を使用する場合にのみ自動的に考慮されます。
  • 古いアプローチで構成が考慮されていることを確認するには、カスタムコードのreindexメソッドを見直して、reindexを実行するために使用されるindexableActionableDynamicQueryに 間隔が設定されていることを確認します。
    • 例えば、WikiNodeIndexer例から始めると_reindexEntries(long companyId)メソッドには以下を含める必要があります。
      indexableActionableDynamicQuery.setInterval(
      _batchIndexingHelper.getBulkSize(getClassName()));
      への参照と一緒に。
      @Reference
      private BatchIndexingHelper _batchIndexingHelper;

追加情報

did-this-article-resolve-your-issue

legacy-knowledge-base