在 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