在 Windows 和 Ubuntu 上安裝和使用 Elasticsearch 和 MongoDB

Mehvish Ashiq 2024年2月16日
  1. 什麼是 Elasticsearch
  2. 在 Windows 10 上安裝 Elasticsearch
  3. 在 Ubuntu 20.04 上安裝 Elasticsearch
  4. 將 Elasticsearch 與 MongoDB 結合使用的主要原因
在 Windows 和 Ubuntu 上安裝和使用 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 或更高版本。

在 windows 和 ubuntu 上安裝和使用 elasticsearch - 檢查 windows 上的 java 版本

第 2 步:下載 Elasticsearch .zip 檔案

轉到此網站並單擊以下螢幕截圖中的下載連結。接下來,選擇我們要使用 Elasticsearch 的平臺,然後下載 .zip 檔案。

在 windows 和 ubuntu 上安裝和使用 elasticsearch - 在 windows 上下載 elasticsearch

第 3 步:執行 Elasticsearch 批處理檔案

一旦我們下載了 .zip 檔案,將其解壓縮到你想要的位置。然後,導航到 bin 資料夾並雙擊 elasticsearch 批處理檔案。

在 windows 和 ubuntu 上安裝和使用 elasticsearch 和 mongodb - 在 windows 上執行 elasticsearch

它只不過是一個標準的 Windows 批處理檔案,其中包含在幕後執行的步驟。此外,它有助於在你的機器上啟動 Elasticsearch 守護程式,如下所示。

保持開啟狀態並按照以下步驟操作。

在 windows 和 ubuntu 上安裝和使用 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,如下面的螢幕截圖所示。

在 windows 和 ubuntu 上安裝和使用 elasticsearch - 在 windows 上禁用彈性搜尋身份驗證

停止 Elasticsearch 並通過執行 elasticsearch.bat 檔案重新開始。

第 5 步:在瀏覽器上執行 Elasticsearch

在你喜歡的瀏覽器上輸入 http://localhost:9200。如果你看到類似於以下螢幕截圖的頁面,則說明 Elasticsearch 已成功啟動並執行。

在 windows 和 ubuntu 上安裝和使用 elasticsearch - elasticsearch 在 windows 上啟動並執行

在 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 檢查它是否存在。

在 windows 和 ubuntu 上安裝和使用 elasticsearch - 檢查 ubuntu 上的 java 版本

我們還需要安裝一個 APT Transport 包,以便通過 HTTPS 訪問我們所有的儲存庫。

sudo apt install apt-transport-https

在 windows 和 ubuntu 上安裝和使用 elasticsearch - 在 ubuntu 上安裝 apt transport

第 2 步:在 Ubuntu 上下載並安裝 Elasticsearch

下一項工作是新增 Elasticsearch 儲存庫。使用 wget 查詢來提取公鑰。

如果一切順利,你必須將 OK 作為輸出。

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

在 windows 和 ubuntu 上安裝和使用 elasticsearch 和 mongodb - 在 ubuntu 上新增 elasticsearch 儲存庫

現在,通過執行以下命令將儲存庫新增到系統。我們在以下命令中編寫 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

在 windows 和 ubuntu 上安裝和使用 elasticsearch - 在 ubuntu 上安裝 elasticsearch

安裝後,我們必須啟動 Elasticsearch,因為它不會自行啟動。如果我們重新啟動機器,我們還需要重新執行 Elasticsearch。

為避免這種情況,請執行以下命令在系統重啟後自動重新載入 Elasticsearch。

sudo systemctl daemon-reload
sudo systemctl enable elasticsearch.service
sudo systemctl start elasticsearch.service

現在,使用以下命令檢查 Elasticsearch 的狀態。

sudo systemctl status elasticsearch

在 windows 和 ubuntu 上安裝和使用 elasticsearch - ubuntu 上的 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

在 Windows 和 ubuntu 上安裝和使用 elasticsearch - elasticsearch 在 ubuntu 上啟動並執行

我們也可以在瀏覽器上輸入 http://localhost:9200,它應該顯示與上面給出的 curl 命令相同的結果。此外,你可以檢視這篇文章以保護 Elasticsearch。

在 windows 和 ubuntu 上安裝和使用 elasticsearch 和 mongodb - 在 ubuntu 上執行 elasticsearch

將 Elasticsearch 與 MongoDB 結合使用的主要原因

我們使用 MongoDB 來儲存和查詢資料,而 Elasticsearch 用於對資料進行全文索引。因此,兩者的結合(用於索引的 Elasticsearch 和用於儲存的 MongoDB)是許多公司遵循的常見架構之一。

Elasticsearch 是為搜尋目的而開發的,它還提供了用於資料索引的高階功能。它與 KibanaLogstash 一起用於資料分析。

使用 Elasticsearch 的優點之一是它可以快速搜尋指定文件中的所有欄位。我們可以將其視為讓我們的個人 Google 搜尋我們的資料。

我們還可以在不同的場景中使用 Elasticsearch。例如,我們可以執行同步、構建搜尋引擎資料遷移索引等等。

在本教程中,我們將學習將 Elasticsearch 與 MongoDB 一起用於同步目的。

使用 Elasticsearch 執行同步

我們必須按照下面給出的步驟在 Windows/Ubuntu 上使用 Elasticsearch 和 MongoDB 執行同步。在此之前,請確保你擁有所有依賴項。

例如,我們在此程式碼示例中使用 Node.js。此外,繼續執行兩個資料庫引擎(MongoDB 和 Elasticsearch)。

之後,讓我們按照步驟操作。

  • 匯入 mongoosemongoosastic 包。
  • 與 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');
});

現在,執行這段程式碼;如下。

在 windows 和 ubuntu 上安裝和使用 elasticsearch 和 mongodb - 執行檔案

確認 MongoDB 中的條目如下。

在 windows 和 ubuntu 上安裝和使用 elasticsearch 和 mongodb - 確認在 mongodb 中的條目

接下來,開啟 http://localhost:9200/students/_search 以在 Elasticsearch 上進行確認。它看起來類似於以下螢幕截圖。

在 windows 和 ubuntu 上安裝和使用 elasticsearch 和 mongodb - 確認在 elasticsearch 中的條目

作者: Mehvish Ashiq
Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook