私は、Nextcloudというオンラインストレージを使用しているのですが、NextcloudではElasticsearchという全文検索エンジンを使用することで、ファイルの内容に関する検索ができるようになります。ここでは、NextcloudとElasticsearchを連携してNextcloudにアップロードされたファイルの内容を検索できるようにする方法を紹介します。6Elasticsearchの準備Elasticsearchをあらかじめインストールしておきます。Elasticsearchのインストール方法はいろいろなところで紹介されているので、ここでは詳しく説明しません。NextcloudとElasticsearchを連携する時には、Elasticsearchの方に「ingest-attachment」というプラグインをインストールする必要があります。ingest-attachmentのインストールは、elasticsearch-pluginというコマンドを使用します。elasticsearch-pluginは、私の場合は/usr/share/elasticsearch/bin/にありました。次のコマンドでインストールできます。ingest-attachmentこれでElasticsearchの準備は完了です。Nextcloudの準備Nextcloudには、管理者アカウントでログインしてアプリをインストールします。アプリは、次のものをインストールします。Filesこれらのアプリの設定は、設定画面の全文検索というところから行います。設定として、Elasticsearchのアドレスを設定しておきましょう。インデックスの作成アプリをインストールしたら、Elasticsearchにファイルを登録します。ここでいうファイルの登録は、すでにNextcloudにアップロードされているファイルをElasticsearchに登録するということです。ファイルの登録は、Nextcloudをインストールしたサーバからコマンドを実行して行います。次のコマンドで登録します。fulltextsearch:indexwww-dataはユーザ名なので、それぞれの環境にあった値に変えてください。登録には、時間がかかります。私の場合、約200GBの使用量で3時間ほどかかりました。これで、登録は終わりました。常駐サービスの登録すでにあるファイルを登録するのは、上記のコマンドでできるのですが新たにアップロードしたファイルは自動で登録されません。そこで、アップロードしたファイルを監視し自動で登録するサービスをサーバに登録し、自動で起動するようにします。今回は、systemdを使って自動起動するサービスを作成します。/etc/systemd/system/という場所に、nextcloud-fulltext-elasticsearch-worker.serviceという名前のファイルを作成します。ファイルの内容は次のものです。fulltextsearch:stopNice=19Restart=always[Install]WantedBy=multi-user.targetphpやNextcloudの場所によって、内容を変える必要があります。次に、systemctlコマンドを使って自動起動の設定、起動をします。nextcloud-fulltext-elasticsearch-worker.serviceこれで、サーバの起動時に自動で監視を始め、変更があったら自動でElasticsearchに登録するようになりました。さいごにすでにあるファイルの量にもよりますが、結構時間がかかる処理なので、時間がある時にやるといいでしょう。