在 Windows 和 Ubuntu 上安裝和使用 Elasticsearch 和 MongoDB
- 什麼是 Elasticsearch
- 在 Windows 10 上安裝 Elasticsearch
- 在 Ubuntu 20.04 上安裝 Elasticsearch
- 將 Elasticsearch 與 MongoDB 結合使用的主要原因
本文是 Elasticsearch 在 Windows 和 Ubuntu 20.04 上的分步安裝和配置指南。它還演示了將 Elasticsearch 與 MongoDB 一起用於兩種作業系統的情況。
什麼是 Elasticsearch
Elasticsearch 是一個 NoSQL 資料庫,一個旨在儲存日誌的開源實時分散式和分析引擎。Elasticsearch 是在 Java 程式設計和 Apache Lucene 之上開發的。
許多知名公司,包括 LinkedIn 和 OpenStack,都在使用它。它支援基於文件而不是模式和表的全文搜尋。
它還用於資料遷移、索引和同步。當應用程式需要太多的搜尋操作和過濾器時,Elasticsearch 是最佳選擇。
在 Windows 10 上安裝 Elasticsearch
第 1 步:檢查是否安裝了 Java
要在 Windows 10 上安裝 Elasticsearch,我們必須在我們的機器上安裝最新版本的 Java。你還可以使用以下任何命令來確認你的機器上已經安裝了 Java。
請記住,如果我們要安裝 Elasticsearch,我們必須擁有 Java 版本 7 或更高版本。
第 2 步:下載 Elasticsearch .zip
檔案
轉到此網站並單擊以下螢幕截圖中的下載連結。接下來,選擇我們要使用 Elasticsearch 的平臺,然後下載 .zip
檔案。
第 3 步:執行 Elasticsearch 批處理檔案
一旦我們下載了 .zip
檔案,將其解壓縮到你想要的位置。然後,導航到 bin
資料夾並雙擊 elasticsearch
批處理檔案。
它只不過是一個標準的 Windows 批處理檔案,其中包含在幕後執行的步驟。此外,它有助於在你的機器上啟動 Elasticsearch 守護程式,如下所示。
保持開啟狀態並按照以下步驟操作。
第 4 步:禁用身份驗證(僅用於學習目的)
預設情況下,身份驗證是啟用的,這意味著我們必須輸入登入憑據。你可以使用預設登入憑據,也可以按照 this 頁面更改它們。
對於本文,我們將禁用身份驗證(僅用於學習目的,但建議在生產環境中使用)。我們使用記事本開啟可以位於%ES_HOME%\config\elasticsearch.yml
路徑的 elasticsearch.yml
檔案。
在這裡,ES_HOME
是你的 Elasticsearch 主目錄。例如,在我們的例子中,elasticsearch.yml
可以位於 C:\Users\DelftStack\Desktop\elasticsearch-8.2.2-windows-x86_64\elasticsearch-8.2.2\config
。
開啟 elasticsearch.yml
檔案後,搜尋 xpack.security.enabled
選項並將其值設為 false
,如下面的螢幕截圖所示。
停止 Elasticsearch 並通過執行 elasticsearch.bat
檔案重新開始。
第 5 步:在瀏覽器上執行 Elasticsearch
在你喜歡的瀏覽器上輸入 http://localhost:9200
。如果你看到類似於以下螢幕截圖的頁面,則說明 Elasticsearch 已成功啟動並執行。
在 Ubuntu 20.04 上安裝 Elasticsearch
第 1 步:安裝所需的依賴項
更新/升級包索引:
sudo apt update
sudo apt upgrade
與 Windows 作業系統一樣,Ubuntu 上也需要 Java 來安裝 Elasticsearch。如果尚未安裝,請在 Ubuntu 20.04 上執行以下命令安裝預設 JDK。
sudo apt install openjdk-8-jdk
安裝後,使用 java -version
檢查它是否存在。
我們還需要安裝一個 APT Transport
包,以便通過 HTTPS
訪問我們所有的儲存庫。
sudo apt install apt-transport-https
第 2 步:在 Ubuntu 上下載並安裝 Elasticsearch
下一項工作是新增 Elasticsearch 儲存庫。使用 wget
查詢來提取公鑰。
如果一切順利,你必須將 OK
作為輸出。
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
現在,通過執行以下命令將儲存庫新增到系統。我們在以下命令中編寫 8.x
,因為這是編寫本教程時的最新版本。
echo "deb https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-8.x.list
再次,使用下面給出的命令更新包索引。
sudo apt update
通過執行以下命令安裝 Elasticsearch。安裝可能需要一些時間。
所以,讓它成功完成。
sudo apt install elasticsearch
安裝後,我們必須啟動 Elasticsearch,因為它不會自行啟動。如果我們重新啟動機器,我們還需要重新執行 Elasticsearch。
為避免這種情況,請執行以下命令在系統重啟後自動重新載入 Elasticsearch。
sudo systemctl daemon-reload
sudo systemctl enable elasticsearch.service
sudo systemctl start elasticsearch.service
現在,使用以下命令檢查 Elasticsearch 的狀態。
sudo systemctl status elasticsearch
第 3 步:配置 Elasticsearch
預設情況下,Elasticsearch 已預先配置為基本使用。如果我們想在我們的設定中使用一個節點,我們不必對配置檔案進行任何更改。
如果要編輯 Elasticsearch 配置,請編輯 /etc/elasticsearch
目錄中的 elasticsearch.yml
檔案。你還可以在 /var/log/elasticsearch/logging.yml
找到日誌記錄的配置。
我們正在編輯 elasticsearch.yml
檔案以禁用本教程的身份驗證。我們將 xpack.security.enabled
的值從 true
更改為 false
。
請記住,每當你編輯 elasticsearch.yml
檔案時,請不要忘記使用以下命令重新啟動服務。
sudo systemctl restart elasticsearch.service
接下來,使用以下命令檢查 Elasticsearch 是否已啟動並正在執行。
curl localhost:9200
我們也可以在瀏覽器上輸入 http://localhost:9200
,它應該顯示與上面給出的 curl
命令相同的結果。此外,你可以檢視這篇文章以保護 Elasticsearch。
將 Elasticsearch 與 MongoDB 結合使用的主要原因
我們使用 MongoDB 來儲存和查詢資料,而 Elasticsearch 用於對資料進行全文索引。因此,兩者的結合(用於索引的 Elasticsearch 和用於儲存的 MongoDB)是許多公司遵循的常見架構之一。
Elasticsearch 是為搜尋目的而開發的,它還提供了用於資料索引的高階功能。它與 Kibana
和 Logstash
一起用於資料分析。
使用 Elasticsearch 的優點之一是它可以快速搜尋指定文件中的所有欄位。我們可以將其視為讓我們的個人 Google 搜尋我們的資料。
我們還可以在不同的場景中使用 Elasticsearch。例如,我們可以執行同步、構建搜尋引擎、資料遷移、索引等等。
在本教程中,我們將學習將 Elasticsearch 與 MongoDB 一起用於同步目的。
使用 Elasticsearch 執行同步
我們必須按照下面給出的步驟在 Windows/Ubuntu 上使用 Elasticsearch 和 MongoDB 執行同步。在此之前,請確保你擁有所有依賴項。
例如,我們在此程式碼示例中使用 Node.js
。此外,繼續執行兩個資料庫引擎(MongoDB 和 Elasticsearch)。
之後,讓我們按照步驟操作。
-
匯入
mongoose
和mongoosastic
包。 -
與 MongoDB 引擎建立成功連線。
-
建立一個 MongoDB 模式。
-
使用
mongoosastic
外掛連線 Elasticsearch。 -
首先,建立 MongoDB 模型,然後建立 Elasticsearch 對映。
-
將資料新增到你的 MongoDB 資料庫,並且它必須與 Elasticsearch 同步。
示例程式碼(將整個程式碼放在一個檔案中,我們將它放在 app.js
檔案中):
// Step 1:
const mongoose = require('mongoose');
const mongoosastic = require('mongoosastic');
// Step 2:
mongoose.connect('mongodb://localhost:27017/studentdb');
// Step 3:
var StudentSchema =
new mongoose.Schema({firstname: String, lastname: String, city: String});
// Step 4:
StudentSchema.plugin(mongoosastic, {'host': 'localhost', 'port': 9200});
// Step 5:
var Student = mongoose.model('student', StudentSchema);
Student.createMapping((err, mapping) => {
console.log('mapping created');
});
// Step 6:
var newStudent =
new Student({firstname: 'Mehvish', lastname: 'Ashiq', city: 'Lahore'});
newStudent.save((err) => {
if (err) {
console.log(err);
}
console.log('Student is added in both databases');
})
newStudent.on('es-indexed', (err, result) => {
console.log('indexed to elastic search');
});
現在,執行這段程式碼;如下。
確認 MongoDB 中的條目如下。
接下來,開啟 http://localhost:9200/students/_search
以在 Elasticsearch 上進行確認。它看起來類似於以下螢幕截圖。