該插件允許Moodle使用Elasticsearch作為Moodle全局搜索的搜索引擎。
此插件提供以下功能:
該插件目前支持Moodle:
| Moodle版本 | 分支 |
|---|---|
| Moodle 4.4及以上 | moodle_404_stable |
| Moodle 4.2至4.3 | moodle_402_stable |
| Moodle 3.10至4.1 | moodle_310_stable |
| Moodle 3.5至3.9 | 掌握 |
當前,該插件已測試以針對以下版本的Elasticsearch:
以及以下版本的OpenSearch:
該插件已經過測試以在以下云平台上工作:
要首先使用此插件,您需要設置Elaticsearch服務。
以下是使Elasticsearch在Debian/Ubuntu操作系統環境中工作的最低限度。請查閱Elasticsearch Documention中的深入說明,或有關如何在其他操作系統上安裝的詳細信息。
注意:下面的說明僅應用於測試和開發目的。不要在生產中這樣做。對於生產設置,我們建議使用Elasticsearch作為群集運行,可以在此處找到入門文檔:https://www.elastic.co/guide/guide/en/elasticsearch/reference/reference/reference/current/current/setup.html
Elasticsearch要求Java作為先決條件,以安裝Java:
sudo apt-get install default-jre default-jdk安裝Java後,以下命令將安裝並啟動Elasticsearch。
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.6.1.deb
sudo dpkg -i elasticsearch-6.6.1.deb
sudo update-rc.d elasticsearch defaults
sudo service elasticsearch start可以通過從命令行運行以下內容來快速測試。
curl -X GET 'http://localhost:9200'
輸出應該看起來像:
{
"name" : " 1QHLiux " ,
"cluster_name" : " elasticsearch " ,
"cluster_uuid" : " mLRqIsnVRrGdgg2OfHWNrg " ,
"version" : {
"number" : " 5.1.2 " ,
"build_hash" : " c8c4c16 " ,
"build_date" : " 2017-01-11T20:18:39.146Z " ,
"build_snapshot" : false ,
"lucene_version" : " 6.3.0 "
},
"tagline" : " You Know, for Search "
}默認情況下,Elasticsearch服務可在以下網址提供: http://localhost:9200
您還可以使用Docker運行Elasticsearch。該項目為帶有說明的支持版本發布了一個官方的容器。
要首先使用此插件,您需要設置Elaticsearch服務。
使用Microsoft Azure為Moodle提供Elasticsearch服務:
Elasticsearch要求Java作為先決條件,以安裝Java:
sudo apt-get install default-jre default-jdk
安裝Java後,以下命令將安裝並啟動Elasticsearch。
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.0.deb
sudo dpkg -i elasticsearch-5.5.0.deb
sudo update-rc.d elasticsearch defaults
sudo service elasticsearch start
可以通過從命令行運行以下內容來快速測試。
curl -X GET 'http://localhost:9200'
輸出應該看起來像:
{
"name" : "1QHLiux",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "mLRqIsnVRrGdgg2OfHWNrg",
"version" : {
"number" : "5.1.2",
"build_hash" : "c8c4c16",
"build_date" : "2017-01-11T20:18:39.146Z",
"build_snapshot" : false,
"lucene_version" : "6.3.0"
},
"tagline" : "You Know, for Search"
}
要首先使用此插件,您需要設置Elaticsearch服務。
使用Amazon Webservices(AWS)為Moodle提供Elasticsearch服務:
使用彈性雲為Moodle提供彈性搜索服務:
設置Elasticsearch服務後,您現在可以安裝Moodle插件。
無論您如何設置Elasticsearch服務,這些設置步驟都是相同的。
<moodledir>/search/engine/elasticsudo -u www-data php admin/cli/upgrade注意:用戶可能與系統上的www-data不同。 設置Elasticsearch服務後,您現在可以配置Moodle插件。
無論您如何設置Elasticsearch服務,這些設置步驟都是相同的。
sudo -u www-data php search/cli/indexer.php --force該插件使用Apache Tika進行文件索引支持。 Tika解析文件,提取文本,然後通過REST API返回。
目前,該插件已測試以適用於以下版本的Tika:
設置Tika測試服務很簡單。在Linux環境上的大多數情況下,您只需下載Java Jar,然後運行服務即可。
wget http://apache.mirror.amaze.com.au/tika/tika-server-1.16.jar
java -jar tika-server-1.16.jar
這將在主機上啟動Tika。默認情況下,Tika服務可在以下網址提供: http://localhost:9998
一旦提供TIKA服務,需要將Moodle中的Elasticsearch插件配置為文件索引支持。
假設您已經遵循了基本安裝步驟,以啟用文件索引支持:
來自Apache Tika網站:
Apache Tika™工具包檢測並提取了一千多種文件類型(例如PPT,XLS和PDF)的元數據和文本。所有這些文件類型都可以通過單個接口進行解析,使TIKA可用於搜索引擎索引,內容分析,翻譯等等。您可以在下載頁面上找到最新版本。請參閱“入門”頁面以獲取有關如何開始使用Tika的更多信息。
使用Elasticsearch文件索引插件而不是獨立的服務,可以看到Elasticsearch實現。當前的Elasticsearch插件是Tika周圍的包裝器。 (Solr搜索引擎還使用Tika)。
使用Tika作為獨立服務具有以下優點:
從二進制數據中提取內容是一種資源密集型操作,並消耗了大量資源。強烈建議在專用攝入節點中使用該處理器運行管道。
該插件可以使用Amazon Web Services(AWS)[Rekognition Service(https://aws.amazon.com/rekognition/)來識別圖像的內容。然後,已確定的內容由Elasticsearch索引,可以在Moodle中搜索(酷?)。
注意: Moodle的核心全局搜索對文件的索引僅限於僅在幾個地方索引文件。 Tracker問題MDL-59459已被提高,以增加全球搜索索引的文件的覆蓋範圍。
當前,用於測試圖像搜索功能的最佳資源,因此可以通過Moodle課程文件資源添加圖像。
一旦您在AWS中進行了設置Elasticsearch,就需要配置以識別圖像。
假設您已經遵循了基本的安裝步驟和文件索引步驟,則可以啟用圖像識別:
注意:您將需要一組具有完整重新認知權限的AWS IAM用戶的AWS API鍵。設置此功能超出了此讀數的範圍。有關更多信息,請參見AWS文檔。
Amazon Web Services(AWS)將Elasticsearch作為託管服務提供。這使得提供和管理和Elasticsearch集群變得易於使用。
使用AWS時,您可以在Elasticsearch中獲得對數據訪問的方法之一是使用請求籤名。請求籤名僅允許Elasticsearch Endpoint接受有效的簽名請求。無符號的請求無權訪問端點。
一旦您在AWS中進行了設置ElasticSearch,就需要配置請求籤名。
假設您已經遵循了基本安裝步驟,以啟用請求籤名:
該插件可公開兩個啟用AJAX的網站服務,以使您可以將Moodle的全局搜索與其他系統和服務集成在一起。兩個可用的網站服務是:
這些服務的設置和文檔與其他Moodle Core Web服務有關。
安裝插件時,該插件設置了一個預配置的外部服務,稱為搜索服務。此服務添加並啟用了此插件提供的兩種Web服務方法。
注意:您需要對全局搜索進行啟用並正確配置此插件,然後才能使用提供的Web服務。
為了運行此插件的PHP單元測試,您需要設置和配置Elasticsearch實例,並將實例詳細信息提供給Moodle。您需要定義:
要通過Moodle配置文件中定義所需的變量,請將以下內容添加到config.php :
define('TEST_SEARCH_ELASTIC_HOSTNAME', 'http://127.0.0.1');
define('TEST_SEARCH_ELASTIC_PORT', 9200);
define('TEST_SEARCH_ELASTIC_INDEX', 'moodle_test_2');
所需的ElasticSerach實例配置變量也可以作為環境變量提供。在Linux命令行中執行此操作:
export TEST_SEARCH_ELASTIC_HOSTNAME=http://127.0.0.1; export TEST_SEARCH_ELASTIC_PORT=9200; export TEST_SEARCH_ELASTIC_INDEX=moodle_test
首先初始化測試環境,從Moodle Code Home目錄: php admin/tool/phpunit/cli/init.php僅運行此插件測試: vendor/bin/phpunit search_elastic_engine_testcase search/engine/elastic/tests/engine_test.php
該插件是由Catalyst IT Australia開發的:
https://www.catalyst-au.net/

歡迎和鼓勵使用GitHub的問題和拉動請求!
https://github.com/catalyst/moodle-search_elastic/issues
如果您希望商業支持或想贊助此插件的其他改進,請與我們聯繫:
https://www.catalyst-au.net/contact-us