Elasticsearch 8 を使用して Nextcloud で全文検索を設定する方法

Nextcloud の Elasticsearch 統合は 2026 年現在も有効ですが、開始前に確認しておくべき互換性の詳細が 1 つあります。現在の Full text search - Elasticsearch Platform アプリは Elasticsearch 8 をサポートしており、Elasticsearch 9 はサポートしていません。プロジェクトの公式リポジトリには、バージョン 26.0.0 以降は Elasticsearch 8 とのみ互換性があると記載されています。さらに、Nextcloud 35 には、対応する Elasticsearch プラットフォーム リリース 35.0.0 が 2026 年 9 月 18 日に公開されています。既存のサーバーをアップグレードする場合は、検索インデックスを変更する前に、Nextcloud のメジャー リリースと一致するアプリ バージョンを確認してください。

このガイドでは、NextcloudでElasticsearch 8を使用してファイルコンテンツをインデックス化するための実践的な設定方法を示します。標準的な3つのアプリケーションスタック、すなわち全文検索フレームワーク、Elasticsearchプラットフォームコネクタ、およびファイルプロバイダに焦点を当てています。コマンドはNextcloud occCLIを使用します。これは、Webインターフェースのみに頼るよりも、検証と自動化が容易であるためです。

公式リファレンス: Nextcloud フルテキスト検索 - Elasticsearch プラットフォーム アプリ、Nextcloud Elasticsearch プラットフォーム リポジトリ、Nextcloud フルテキスト検索フレームワーク、Nextcloud ファイルフルテキスト検索プロバイダー、およびElastic のシングルノード Docker インストール ガイド。

Nextcloudの全文検索スタックには実際何が含まれているのか

Nextcloudの全文検索は単一のアプリではありません。コアとなる全文検索アプリがフレームワークを提供します。プラットフォームアプリがそのフレームワークを検索エンジンに接続し、1つ以上のプロバイダーアプリが検索可能なコンテンツを抽出します。ファイルコンテンツの場合、プロバイダーは「全文検索 - ファイル」です。Elasticsearchは抽出されたインデックスを保存し、クエリに応答します。

  • 全文検索:コアフレームワークと検索オーケストレーションレイヤー。
  • 全文検索 - Elasticsearch Platform: Elasticsearchにドキュメントとクエリを送信するコネクタ。
  • 全文検索 - ファイル:ユーザーのファイルをインデックス作成のためのフレームワークに公開するプロバイダー。
  • Elasticsearch 8:インデックスを保存する外部検索エンジン。

トラブルシューティングにおいては、この分離が重要になります。Elasticsearch HTTPエンドポイントが正常に動作しているからといって、Nextcloudがファイルコンテンツを抽出できるとは限りませんし、ファイルプロバイダが有効になっているからといって、プラットフォームコネクタがElasticsearchにアクセスできるとは限りません。組み込みfulltextsearch:testコマンドは、単一のコンポーネントだけでなく、構成済みのチェーン全体をチェックするため、非常に便利です。

始める前に

Nextcloudへの管理者権限、Nextcloudが稼働するサーバーまたはコンテナへのシェルアクセス権限、およびその環境からアクセス可能なElasticsearch 8インスタンスが必要です。以下の例では、Linuxサーバーを想定し、検索サービスを分離するためにElasticsearchにDockerを使用しています。既にマネージド型または専用のElasticsearch 8クラスタを運用している場合は、既存のHTTPSエンドポイントを使用してください。

本番環境では、ポート9200を直接パブリックインターネットに公開しないでください。Elasticの最新のDockerドキュメントでは、HTTPポートを制御されたインターフェースにバインドし、セキュリティ機能を維持することを推奨しています。Elasticは、vm.max_map_count本番環境のDockerデプロイメントに関するホスト要件なども文書化しています。セキュリティが無効になっているシングルノードコマンドは、本番環境のテンプレートではなく、ローカルラボのショートカットとして扱ってください。

ステップ1:必要な3つのNextcloudアプリをインストールします

Nextcloudアプリページから、フルテキスト検索、フルテキスト検索 - Elasticsearchプラットフォーム、およびフルテキスト検索 - ファイルをインストールして有効にします。また、以下のコマンドでインストールすることもできますocc。ヘッドレスサーバーでは、この方法の方が簡単な場合が多いです。

sudo -u www-data php /var/www/nextcloud/occ app:install fulltextsearch
sudo -u www-data php /var/www/nextcloud/occ app:install fulltextsearch_elasticsearch
sudo -u www-data php /var/www/nextcloud/occ app:install files_fulltextsearch

Nextcloud ファイルが別の場所に保存されている場合は、パスを に調整してくださいocc。公式の Nextcloud Docker イメージでは、パスは通常 です/var/www/html/occ。インストール後、 を使用して、occ app:list3 つのアプリすべてが「有効」の下に表示されていることを確認してください。

Nextcloudアプリのページに、全文検索、全文検索 - Elasticsearchプラットフォーム、および全文検索 - ファイルが有効になっていることが表示されています。

キャプション:コアとなる全文検索フレームワーク、Elasticsearchプラットフォームコネクタ、およびファイルプロバイダが有効になっているNextcloudアプリページ。

ステップ2:Elasticsearch 8を起動し、NextcloudがElasticsearch 8にアクセスできることを確認します。

Elasticsearchコネクタは、Nextcloudアプリのバージョン26.0.0以降、Elasticsearch 8を必要としています。使用しているアプリのバージョンに関する公式の互換性に関する記述が変更されない限り、Elasticsearch 9に置き換えないでください。

ローカルラボ環境の場合、ElasticはシングルノードのDocker構成を推奨しています。最小限のテストインスタンスをプライベートインターフェース上で起動できます。本番環境では、セキュリティを無効にするのではなく、認証とTLSを有効にしたまま、Elasticの最新のインストール手順に従ってください。

docker run --name es01   --net elastic   -p 127.0.0.1:9200:9200   -it -m 6GB   docker.elastic.co/elasticsearch/elasticsearch:<ELASTICSEARCH_8_VERSION>

Elastic のセキュアなデフォルト起動では、組み込みelasticユーザーのパスワードが出力され、HTTP TLS 証明書が作成されます。その後、公式ガイドに記載されているように、CA 証明書と認証情報を使用してノードを検証できます。Nextcloud が別の Docker コンテナにある場合は、それが127.0.0.1Elasticsearch コンテナではなく、Nextcloud コンテナ自体を指していることに注意してください。両方のサービスを共有 Docker ネットワークに配置し、Elasticsearch サービス名 (例: ) を使用するhttps://elasticsearch:9200か、プライベート アドレス経由でルーティングします。

Linuxターミナルに、シングルノードのElasticsearchコンテナが起動し、ポート9200で待機している様子が表示されている。

キャプション:起動およびチェック中のシングルノードElasticsearchサービスのターミナル画面。本番環境では、セキュリティ保護されていないラボ構成を使用するのではなく、認証とTLSを有効にしておくことをお勧めします。

ステップ3:NextcloudがElasticsearchを使用するように設定する

管理インターフェースでプラットフォームを設定することもできますが、CLI形式の方が正確で再現性があります。Nextcloud独自のオールインワン統合機能は、Elasticsearchプラットフォームクラスを選択してフレームワークを設定し、Elasticsearchホスト名とインデックス名をコネクタに渡します。

sudo -u www-data php /var/www/nextcloud/occ fulltextsearch:configure '{"search_platform":"OCA\\FullTextSearch_Elasticsearch\\Platform\\ElasticSearchPlatform"}'

sudo -u www-data php /var/www/nextcloud/occ fulltextsearch_elasticsearch:configure '{"elastic_host":"https://elastic:YOUR_PASSWORD@elasticsearch:9200","elastic_index":"nextcloud_index"}'

Nextcloud PHP プロセスからアクセス可能なホスト URL を使用してください。Elasticsearch エンドポイントがプライベート CA を使用している場合は、証明書の検証を無効にするのではなく、Nextcloud 環境がその CA を信頼するようにしてください。共有システムでは、認証情報をシェル履歴に保存することは避け、デプロイメントに適した保護された構成方法を使用してください。

インデックス名は小文字で、この Nextcloud インスタンス専用にする必要があります。例えば、といった名前はnextcloud_index識別しやすいでしょう。複数の Nextcloud インスタンスが 1 つの Elasticsearch クラスターを共有する場合は、各インスタンスに一意のインデックス名を付けてください。

Elasticsearchが選択され、Elasticsearchアドレスとnextcloud_indexインデックス名が表示されたNextcloud全文検索管理画面

キャプション:検索プラットフォームとしてElasticsearchが選択され、専用のインデックス名が設定された全文検索管理画面。

ステップ4:インデックスを作成するファイルコンテンツを選択します

ファイルプロバイダは、インデックス作成のために送信されるファイルコンテンツのカテゴリを制御します。Nextcloudのオールインワン初期化では、現在、次のコマンドでPDFとオフィス文書の抽出が可能です。

sudo -u www-data php /var/www/nextcloud/occ files_fulltextsearch:configure '{"files_pdf":true,"files_office":true}'

利用可能なプロバイダーオプションはアプリのバージョンによって異なる場合があるため、古いチュートリアルの設定をコピーする前に、現在の設定を確認してください。また、テキスト抽出の品質はソースファイルに依存することにも注意してください。テキストが埋め込まれた通常のPDFは、スキャンされた画像のみのPDFよりもインデックス作成がはるかに容易です。全文検索は、OCRの精度が低い場合でも自動的に精度を向上させるものではありません。

ステップ5:検索設定全体をテストする

大規模なライブラリをインデックス化する前に、フレームワークテストを実行してください。

sudo -u www-data php /var/www/nextcloud/occ fulltextsearch:test

テストが成功すれば、プラットフォームにアクセス可能であり、設定されたプロバイダ/プラットフォームの組み合わせが動作することが確認できます。テストが失敗した場合は、初期インデックスを開始する前に接続を修正してください。一般的な原因としては、localhost間違ったコンテナの使用、証明書の信頼性の問題、認証の失敗、互換性のないElasticsearchメジャーバージョン、またはElasticsearchが拒否するインデックス構成などが挙げられます。

ステップ6:初期インデックスを作成する

テストに合格したら、初期インデックスを作成します。

sudo -u www-data php /var/www/nextcloud/occ fulltextsearch:index

大規模サーバーでは、これには時間がかかり、CPU、メモリ、ストレージI/O、およびElasticsearchヒープを消費する可能性があります。トラフィックの少ない時間帯に最初のクロールを実行し、NextcloudとElasticsearchの両方のログを監視してください。このフレームワークは、Nextcloud All-in-Oneが初期設定時に使用するエラーリセットフォームもサポートしています。

sudo -u www-data php /var/www/nextcloud/occ fulltextsearch:index '{"errors":"reset"}' --no-readline

正当な理由なく、正常なインデックスを繰り返しリセットして再構築しないでください。アップグレードを行う際は、まず3つの検索アプリのリリースノートを読み、実際にインデックスの再構築が必要かどうかを確認してください。

ステップ7:インデックスを最新の状態に保つ

初期インデックスはあくまでスナップショットです。新規アップロードや編集には継続的なインデックス作成が必要です。全文検索フレームワークには、fulltextsearch:live継続処理用のコマンドが含まれています。これを使用する場合は、プロセススーパーバイザーまたは別のサービスマネージャで実行し、障害発生時やホスト再起動後に自動的に再起動されるようにしてください。

sudo -u www-data php /var/www/nextcloud/occ fulltextsearch:live

SSHセッションで管理されていないフォアグラウンドプロセスを起動し、ログアウト後もインデックス作成が継続されると想定しないでください。コンテナ環境では、ライブワーカーを専用の監視対象プロセスとして実行できます。従来のサーバーでは、systemdまたはスーパーバイザーを使用できます。他のバックグラウンドサービスと同様に監視してください。

ステップ8:CLIとNextcloudインターフェースの両方から検索を確認する

最初のクロールが完了したら、ファイル名だけでなく、既知のドキュメント内に含まれるフレーズを検索してください。これにより、コンテンツの抽出とインデックス作成が正しく機能していることを確認できます。最近の全文検索バージョンではocc、バックエンドのインデックス作成の問題とブラウザまたは統合検索の問題を切り分ける際に役立つ検索機能もサポートされています。

ウェブインターフェースで、Nextcloudの検索フィールドを使用して、インデックス登録されていることがわかっているPDF、DOCX、またはテキストファイルから特徴的なフレーズを検索してください。ファイル名検索は機能するのに文書本文検索が機能しない場合は、ファイルプロバイダの設定とソース文書の種類を確認してください。

Nextcloudの検索パネルの上に、全文検索テストとインデックスコマンドが正常に実行され、一致するドキュメントが返されているターミナル画面が表示されます。

キャプション:フレームワークのテストと初期インデックス作成が成功し、その後、インデックス化されたドキュメントを返すNextcloud検索が実行された。

よくある故障のトラブルシューティング

Elasticsearchはcurlと連携できるが、Nextcloudは接続できない

Nextcloud PHP プロセスと同じネットワーク名前空間からテストを実行してください。Docker では、ホストからのリクエストが成功したとしても、Nextcloud コンテナが Elasticsearch サービスに名前解決またはアクセスできることを証明するものではありません。DNS、コンテナネットワーク、ファイアウォールルール、TLS の信頼関係、および設定された URL の正確なスキームを確認してください。

コネクタがElasticsearchのバージョンに関する問題を報告しています

デプロイしようとしているイメージタグだけでなく、実際のElasticsearchのメジャーバージョンを確認してください。現在の公式コネクタリポジトリでは、アプリバージョン26.0.0以降はElasticsearch 8との互換性があると記載されています。執筆時点では、Elasticsearch 9のサポートに関するアップストリームのリクエストが未解決のままなので、Elasticsearch 9との互換性は保証されません。

インデックス作成にはメモリが多すぎる

Elasticsearch のヒープ、コンテナのメモリ制限、ホストのメモリをまとめて監視してください。Elastic の Docker 運用ドキュメントでは、ホストレベルの設定についても言及していますvm.max_map_count。JVM が強制終了されている場合、Nextcloud PHP のメモリ制限だけを増やしても、Elasticsearch 側の問題は解決しません。

共有ファイルまたは外部ファイルの一部が見つかりません

検索動作は、プロバイダのサポート状況やアプリのバージョンによって異なる場合があります。ファイルプロバイダプロジェクトでは、共有フォルダ、グループフォルダ、外部ストレージに関する問題を引き続き追跡しています。ストレージの種類によっては、通常のローカルファイルとは異なる動作を示す場合があるため、小さな制御されたサンプルで問題を再現し、プロバイダの公式問題追跡システムを確認してから、インデックス全体を再構築してください。

セットアップが完了したかどうかを確認する方法

正常なデプロイメントには、次の4つの兆候が見られます。Elasticsearch 8がNextcloudからアクセス可能であり、fulltextsearch:testテストに合格し、初期設定がfulltextsearch:index未解決のエラーなく完了し、既知のドキュメント内のテキストを検索すると、認証されたユーザーに対してそのファイルが返されます。インデックスエンドポイントは非公開に保ち、本番環境でElasticsearchのセキュリティを維持し、Nextcloudのメジャーリリースに合わせて3つのNextcloud検索アプリをアップグレードしてください。

バージョンに依存する詳細については、公式のNextcloud Elasticsearchプラットフォームのリリースリストと公式のElasticプロダクションDockerガイダンスを参照してください。これらの情報源は、メジャーアップグレード前に互換性とホスト要件を確認するための最も安全な場所です。

コメントを残す

Elasticsearch 8 を使用して Nextcloud で全文検索を設定する方法

Elasticsearch 8 を使用して Nextcloud で全文検索を設定する方法

Elasticsearch 8 を使用して Nextcloud の全文検索を設定し、必要なアプリをインストールし、インデックスを設定し、最初のクロールを実行して、検索結果を確認します。

PythonとSimple-Matrix-Bot-Libを使用してMatrix Botをセットアップする方法

PythonとSimple-Matrix-Bot-Libを使用してMatrix Botをセットアップする方法

PythonとSimple-Matrix-Bot-Libを使用してMatrixボットを構築し、認証とデプロイのオプションを比較し、コマンドをテストし、代わりにmatrix-nioを使用すべき場合を理解します。

Let's Encrypt SSLを使用してUbuntu 24.04にJitsi Meetをインストールする方法

Let's Encrypt SSLを使用してUbuntu 24.04にJitsi Meetをインストールする方法

DNS、ファイアウォールルール、公式リポジトリ、Let's Encrypt SSL、サービスチェック、NATトラブルシューティングを含むJitsi MeetをUbuntu 24.04にインストールします。

ownCloudデスクトップ同期クライアントで「SSL証明書の検証に失敗しました」というエラーを修正する

ownCloudデスクトップ同期クライアントで「SSL証明書の検証に失敗しました」というエラーを修正する

ownCloud Desktopの同期証明書エラーを修正するには、サーバーURL、証明書名と証明書チェーン、システムクロック、クライアントバージョン、および信頼済みCAストアを確認してください。

Ubuntu 24.04でNextcloudのRedisキャッシングを設定する方法

Ubuntu 24.04でNextcloudのRedisキャッシングを設定する方法

PhpRedis、APCu、ループバック専用のRedisサービス、および実践的な検証手順を使用して、Ubuntu 24.04上でNextcloud向けにRedisファイルロックと分散キャッシュを設定します。

Element Webの「イベントの復号化に失敗しました」というE2EEエラーを修正する

Element Webの「イベントの復号化に失敗しました」というE2EEエラーを修正する

デバイス認証、キーのバックアップ、リカバリキー、および紛失したルームキーを確認することで、メッセージ履歴を損なうことなく、Element Webの復号化エラーをトラブルシューティングします。

Nextcloudで二要素認証(2FA)を設定および適用する方法

Nextcloudで二要素認証(2FA)を設定および適用する方法

Nextcloudの2要素認証プロバイダーを有効にする方法、ユーザーまたはグループに対して2要素認証を強制する方法、復旧を準備する方法、ログインとクライアントアプリを検証する方法を学びましょう。

ZimbraでIPアドレスによる送信メールリレーを制限する方法

ZimbraでIPアドレスによる送信メールリレーを制限する方法

zimbraMtaMyNetworks を使用すると、Zimbra で認証されていない送信メールのリレーを信頼できる IP アドレスに制限できます。許可リストを安全に検査、更新、再読み込み、検証する方法を学びましょう。

NextcloudのPHPメモリ制限警告を修正する

NextcloudのPHPメモリ制限警告を修正する

Nextcloud の PHP メモリ制限を少なくとも 512M に設定し、適切な Web PHP 設定を見つけて、Apache または PHP-FPM を再起動し、警告が解消されたことを確認してください。

音声通話およびビデオ通話用のMatrix Coturn TURN/STUNサーバーの設定方法

音声通話およびビデオ通話用のMatrix Coturn TURN/STUNサーバーの設定方法

CoturnをSynapseと連携させて、Matrix WebRTC通話を設定します。共有認証情報、NAT、ファイアウォールポート、TLSオプションを設定し、従来のTURNとMatrixRTCおよびLiveKitを区別します。