エラスティックサーチ

エラスティックサーチ
タイプ検索エンジン、Elasticsearch
セット該当なし
ダウンロード https://moodle.org/plugins/search_elastic
問題点 https://github.com/catalyst/moodle-search_elastic/issues
討論
メンテナ マット・ポリット

Moodleグローバル検索 - Elasticsearch Backend Plugin

このプラグインにより、MoodleはElasticsearchをMoodleのグローバル検索の検索エンジンとして使用することができます。

このプラグインによって提供される機能は次のとおりです。

  • Elasticsearchの複数のバージョン
  • ファイルの索引付け
  • アマゾンウェブサービス(AWS)と互換性のあるリクエスト署名
  • Moodleプロキシ設定を尊重します
  • 画像認識と索引付け
  • ウェブサービス

サポートされているMoodleのバージョン

このプラグインは現在Moodleをサポートしています:

  • 3.1
  • 3.2
  • 3.3

インストール

注意: Moodleでグローバル検索機能を有効にする前に、これらのステップをすべて完了してください。

  1. コードを入手してコピー/インストールします。
     <moodledir> /検索/エンジン/弾性
  2. このプラグインはlocal_awsにも依存しておりhttps://github.com/catalyst/moodle-local_awsからコードを取得してそれをにコピー/インストールします。
     <moodledir> / local / aws 
  3. アップグレードを実行します。
     sudo -u www-data php admin / cli / upgrade 
    注意:ユーザーはあなたのシステムのwww-dataとは違うかもしれません。
  4. 検索エンジンとしてエラスティックを選択して、 サイト管理>プラグイン>検索>グローバル検索の管理でプラグインを設定します。
  5. Elasticsearchプラグインを次の場所で設定します。[ サイトの管理]> [プラグイン]> [検索]> [Elastic]
  6. Elasticsearchサーバーのホスト名ポートを設定します
  7. 必要に応じて、 リクエストサイズ変数を変更します。一般的にこれはそのままにしておくことができます。 AWSなどの一部のElasticsearchプロバイダーは、HTTPペイロードの最大サイズに制限があります。したがって、サイズをバイト単位に制限します。
  8. インデックスを作成してElasticsearchにサイトのデータを入力するには、このCLIスクリプトを実行します。
     sudo -u www-data php検索/ cli / indexer.php --force 
  9. サイト管理>詳細機能でグローバル検索を有効にする

Elasticsearchのバージョンサポート

現在、このプラグインはElasticsearchの以下のバージョンに対して動作することがテストされています。

  • 2.3.4
  • 2.4.4
  • 5.1.2
  • 5.5.0

Elasticsearchの設定

以下は、ElasticsearchをDebian / Ubuntuオペレーティングシステム環境で動作させるための最低限の設定です。詳細な指示、または他のオペレーティングシステムへのインストール方法の詳細については、 Elasticsearch Documentionを参照してください。

注:以下の説明はテストおよび開発の目的にのみ使用してください。実運用ではしないでください。

Elasticsearchは、Javaをインストールするための前提条件としてJavaを必要とします。

sudo apt-getインストールdefault-jre default-jdk

Javaがインストールされると、以下のコマンドがElasticsearchをインストールして起動します。

https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.1.2.deb
sudo dpkg -i elasticsearch-5.1.2.deb
sudo update-rc.d elasticsearchのデフォルト
sudoサービスelasticsearchの開始

クイックテストは、コマンドラインから次のコマンドを実行して実行できます。

curl -X GET 'http:// localhost:9200'

出力は次のようになります。

{
  "名前": "1QHLiux"、
  "cluster_name": "elasticsearch"、
  "cluster_uuid": "mLRqIsnVRrGdgg2OfHWNrg"、
  "バージョン" : {
    "番号": "5.1.2"、
    "build_hash": "c8c4c16"、
    "build_date": "2017-01  -  11T20:18:39.146Z"、
    "build_snapshot":false、
    "lucene_version": "6.3.0"
  、
  "キャッチフレーズ": "あなたが知っている、検索のために"
}

ファイル索引付けのサポート

このプラグインはファイルの索引付けをサポートするためにApache Tikaを使用しています。 Tikaはファイルを解析し、テキストを抽出し、それをREST APIを介して返します。

ティカセットアップ

Tikaテストサービスの設定は簡単です。ほとんどの場合、Linux環境では、Java JARをダウンロードしてからサービスを実行するだけです。

https://apache.mirror.amaze.com.au/tika/tika-server-1.14.jarをwgetします。
java -jar tika-server-1.14.jar

これでホスト上でTikaが起動します。デフォルトでは、Tikaサービスは次の場所で利用可能です。

 http:// localhost:9998 

Moodleでファイルインデックス作成サポートを有効にする

Tikaサービスが利用可能になったら、MoodleのElasticsearchプラグインをファイルインデックスサポート用に設定する必要があります。
ファイルの索引付けサポートを有効にするために、すでに基本的なインストール手順を実行しているとします。

  1. Elasticsearchプラグインを次の場所で設定します。[ サイトの管理]> [プラグイン]> [検索]> [Elastic]
  2. 「ファイルの索引付けを有効にする」チェックボックスを選択します。
  3. Tikaのホスト名とTikaサービスのTikaポートを設定します。基本的なTikaのセットアップ手順に従えば、デフォルトを変更する必要はありません。
  4. [ 変更保存 ]ボタンをクリックしてください

ティカとは

Apache Tikaの Webサイトから:

Apache Tika™ツールキットは、1000種類以上のファイルタイプ(PPT、XLS、PDFなど)からメタデータとテキストを検出して抽出します。これらのファイルタイプはすべて単一のインターフェースを介して解析できるため、Tikaは検索エンジンのインデックス作成、コンテンツ分析、翻訳などに役立ちます。最新のリリースはダウンロードページにあります。 Tikaを使い始める方法についての詳細はGetting Startedページをご覧ください。

なぜTikaをスタンドアロンのサービスとして使用するのですか?

Elasticsearchの実装では、スタンドアロンのサービスではなくElasticsearchファイルインデックス作成プラグインを使用するのが一般的です。現在のElasticsearchプラグインはTikaのラッパーです。 (Solr検索エンジンもTikaを使用しています)。
Tikaをスタンドアロンサービスとして使用すると、次のような利点があります。

  • AWSなどのファイルインデックスプラグインをサポートしていないElasticsearch設定のファイルインデックスをサポートできます。
  • Elasticsearchバージョンに基づいてセットアップやプラグインを変更する必要はありません。
  • 1つのTikaサービスを複数のElasticsearchクラスター間で共有できます。
  • 検索ノードの一部ではない専用のインフラストラクチャでTikaを実行できます。

画像認識と索引付け

このプラグインは、Amazon Web Services(AWS)再認識サービスを使用して画像の内容を識別できます。識別されたコンテンツはElasticsearchによってインデックスされ、Moodleで検索できます(かっこいいですか?)。
この機能を設定するには、AWSのサービスと使用方法に関する基本的な知識が必要です。他のクラウドサービスと同様に、無料ではないため、十分に使用すると費用がかかります。

注意: Moodleのコアグローバル検索によるファイルのインデックス作成は、現在、2つの場所からのファイルのインデックス作成のみに制限されています。 Global Searchで索引付けされたファイルの対象範囲を広げるために、Trackerの問題[https://tracker.moodle.org/browse/MDL-59459 MDL-59459 ]が提起されました。

現在、画像検索機能をテストするために使用するのに最適なリソースですので、Moodleコースファイルリソースを通して画像を追加してください。

Moodleで画像認識とインデックス作成のサポートを有効にする

AWS MoodleでElasticsearchを設定したら、画像認識用に設定する必要があります。
画像認識を有効にするために、基本的なインストール手順とファイルのインデックス作成手順を既に実行しているとします。

  1. Elasticsearchプラグインを次の場所で設定します。[ サイトの管理]> [プラグイン]> [検索]> [Elastic]
  2. [ 画像の署名を有効にする]チェックボックスをオンにします。
  3. AWS認証情報のキーIDシークレットキー 、および地域と再認識地域を設定します。
  4. 。 [ 変更保存 ]ボタンをクリックしてください

注:完全な再認識権限を持つAWS IAMユーザーには、一連のAWS APIキーが必要になります。これを設定することはこのドキュメントの範囲を超えています。詳細についてはAWSのドキュメントを参照してください。

署名を要求する

Amazon Web Services(AWS)はElasticsearchをマネージドサービスとして提供しています。これにより、Elasticsearchクラスターのプロビジョニングと管理が容易になります。
AWSを使用しているときにElasticsearchでデータへのアクセスを保護する方法の1つは、リクエスト署名を使用することです。 リクエストの署名により、有効な署名付きリクエストのみをElasticsearchエンドポイントで受け付けることができます。署名されていない要求は、エンドポイントへのアクセスを許可されていません。

Moodleでリクエスト署名サポートを有効にする

AWS MoodleでElasticsearchをセットアップしたら、リクエスト署名用に設定する必要があります。
リクエスト署名を有効にするために、すでに基本的なインストール手順に従っていると仮定します。

  1. Elasticsearchプラグインを次の場所で設定します。*サイト管理>プラグイン>検索> Elastic *
  2. *リクエスト署名を有効にする*チェックボックスを選択します。
  3. AWS認証情報とElasticsearchの地域の* Key ID *、* Secret Key *、* Region *を設定します。
  4. *変更を保存*ボタンをクリックしてください。

ウェブサービス

このプラグインは2つのAJAX対応ウェブサービスを公開し、Moodleのグローバル検索を他のシステムやサービスと統合できるようにします。利用可能な2つのWebサービスは次のとおりです。

  • search_elastic_search - 提供された検索クエリに基づいて検索結果を返します。
  • search_elastic_search_areas - Moodleで利用可能な各検索エリアの検索エリアIDを返します。

これらのサービスの設定と文書化は他のMoodleコアウェブサービスと一致しています。

このプラグインは、プラグインがインストールされたときに*検索サービス*と呼ばれる事前設定された*外部サービス*をセットアップします。このサービスは、このプラグインが提供する2つのWebサービスメソッドを追加して有効にします。

注:提供されているWebサービスを使用するには、グローバル検索とこのプラグインを有効にして正しく設定する必要があります。

テスト設定

このプラグインのPHPユニットテストを実行するには、インスタンスの詳細をMoodleに提供するのと同じようにElasticsearchインスタンスをセットアップおよび設定する必要があります。あなたが定義する必要があります:

  • ホスト名:Elasticsearch Instanceのホストの名前URL
  • ポート:ホストが待機しているTCPポート
  • インデックス:テスト中に使用するインデックスの名前。 **注:**これが生産指数と異なることを確認してください。

config.phpによる設定

あなたのMoodle設定ファイルで必要な変数を定義するには、 `config.php`に以下を追加してください。

define( 'TEST_SEARCH_ELASTIC_HOSTNAME'、 'https://127.0.0.1');
define( 'TEST_SEARCH_ELASTIC_PORT'、9200);
define( 'TEST_SEARCH_ELASTIC_INDEX'、 'moodle_test_2');

環境変数による設定

必要なElasticserachインスタンス設定変数も環境変数として提供できます。 Linuxのコマンドラインでこれを行うには:

TEST_SEARCH_ELASTIC_HOSTNAME = http://127.0.0.1をエクスポートします。 
TEST_SEARCH_ELASTIC_PORT = 9200をエクスポートします。 
エクスポートTEST_SEARCH_ELASTIC_INDEX = moodle_test

テストを実行する

まずMoodleコードのホームディレクトリからテスト環境を初期化します: `php admin / tool / phpunit / cli / init.php`このプラグインテストのみを実行するには、以下の手順に従います。` vendor / bin / phpunit search_elastic_engine_testcase search / engine / elastic / tests / engine_test .php`