如何在Ubuntu 22.04上安装和配置Elasticsearch

A previous version of this article was written by Toli.

介绍

Elasticsearch是一个用于实时分布式搜索和数据分析的平台。由于其易用性、强大的功能和可伸缩性,它是一个受欢迎的选择。

本文将指导您安装Elasticsearch,为您的使用情况配置它,保护您的安装,并开始使用您的Elasticsearch服务器。

先决条件

在按照本教程操作之前,您需要:

来实现这一点。在本教程中,我们将使用运行Elasticsearch所需的最小CPU和RAM数量。请注意,您的Elasticsearch服务器所需的CPU、RAM和存储量取决于您预期的日志量。

步骤1 — 安装和配置Elasticsearch

Elasticsearch组件不包含在Ubuntu的默认软件包存储库中。但是,可以在添加Elastic的软件包源列表后使用APT进行安装。

所有软件包都使用Elasticsearch签名密钥进行签名,以保护您的系统免受软件包欺骗。经过密钥验证的软件包将被您的软件包管理器视为可信任的。在此步骤中,您将导入Elasticsearch公共GPG密钥,并添加Elastic软件包源列表以安装Elasticsearch。

首先,使用cURL,这是一个用于通过URL传输数据的命令行工具,将Elasticsearch公共GPG密钥导入APT。请注意,我们使用参数-fsSL来静音所有进度和可能的错误(除了服务器故障),并允许cURL在重定向时在新位置上发出请求。将输出导向gpg --dearmor命令,该命令将密钥转换为apt可以用来验证下载软件包的格式。

  1. curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elastic.gpg

接下来,将Elastic源列表添加到sources.list.d目录中,其中apt将搜索新源:

  1. echo "deb [signed-by=/usr/share/keyrings/elastic.gpg] https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list

文件中的[signed-by=/usr/share/keyrings/elastic.gpg]部分指示apt使用您下载的密钥来验证Elasticsearch软件包的存储库和文件信息。

接下来,更新您的软件包列表,以便APT读取新的Elastic源:

  1. sudo apt update

然后使用以下命令安装Elasticsearch:

  1. sudo apt install elasticsearch

在提示时按Y确认安装。如果提示重新启动任何服务,请按ENTER接受默认值并继续。Elasticsearch现已安装并准备好配置。

步骤2 — 配置Elasticsearch

为了配置Elasticsearch,我们将编辑其主配置文件elasticsearch.yml,其中大部分配置选项都存储在这个文件中。此文件位于/etc/elasticsearch目录中。

使用您喜欢的文本编辑器编辑Elasticsearch的配置文件。在这里,我们将使用nano

  1. sudo nano /etc/elasticsearch/elasticsearch.yml

注意:Elasticsearch的配置文件是以YAML格式编写的,这意味着我们需要保持缩进格式。确保在编辑此文件时不要添加任何额外的空格。

elasticsearch.yml文件提供了集群、节点、路径、内存、网络、发现和网关的配置选项。这些选项中的大多数在文件中预先配置,但您可以根据需要更改它们。为了演示单服务器配置的目的,我们只会调整网络主机的设置。

Elasticsearch 在端口 9200 上监听来自任何地方的流量。您将希望限制外部访问到您的 Elasticsearch 实例,以防止外部人员通过其 [REST API] (https://en.wikipedia.org/wiki/Representational_state_transfer) 读取您的数据或关闭 Elasticsearch 集群。为了限制访问并因此增加安全性,请找到指定 network.host 的行,取消注释,并将其值替换为 localhost,使其看起来像这样:

/etc/elasticsearch/elasticsearch.yml
. . .
# ---------------------------------- 网络 -----------------------------------
#
# 将绑定地址设置为特定 IP(IPv4 或 IPv6):
#
network.host: localhost
. . .

我们已经指定了 localhost,以便 Elasticsearch 在所有接口和绑定的 IP 上监听。如果您希望它仅在特定接口上监听,可以在 localhost 的位置指定其 IP。保存并关闭 elasticsearch.yml。如果您正在使用 nano,您可以按 CTRL+X,然后按 Y,然后按 ENTER 进行操作。

这些是您可以开始使用 Elasticsearch 的最小设置。现在,您可以第一次启动 Elasticsearch。

使用 systemctl 启动 Elasticsearch 服务。给 Elasticsearch 一些时间来启动。否则,您可能会收到有关无法连接的错误。

  1. sudo systemctl start elasticsearch

接下来,运行以下命令以使 Elasticsearch 在每次服务器启动时启动:

  1. sudo systemctl enable elasticsearch

启用 Elasticsearch 启动时,让我们继续下一步讨论安全性。

步骤3 —— 安全配置Elasticsearch

默认情况下,任何可以访问HTTP API的人都可以控制Elasticsearch。这并不总是一个安全风险,因为Elasticsearch仅侦听环回接口(即127.0.0.1),只能在本地访问。因此,不存在公共访问的可能性,只要所有服务器用户都是受信任的,安全性可能不是一个主要问题。

如果您需要允许对HTTP API的远程访问,可以通过Ubuntu的默认防火墙UFW限制网络暴露。如果您按照先决条件在Ubuntu 22.04上进行初始服务器设置教程中的步骤进行操作,此防火墙应已启用。

我们现在将配置防火墙,以允许对默认Elasticsearch HTTP API端口(TCP 9200)的访问,以供受信任的远程主机使用,通常是单服务器设置中使用的服务器,如198.51.100.0。要允许访问,请键入以下命令:

  1. sudo ufw allow from 198.51.100.0 to any port 9200

完成后,您可以使用以下命令启用UFW:

  1. sudo ufw enable

最后,使用以下命令检查UFW的状态:

  1. sudo ufw status

如果您已正确指定规则,应该会收到如下输出:

Output
Status: active To Action From -- ------ ---- 9200 ALLOW 198.51.100.0 22 ALLOW Anywhere 22 (v6) ALLOW Anywhere (v6)

现在,UFW应已启用并设置为保护Elasticsearch端口9200。

如果您想要投资于额外的保护,Elasticsearch 提供了商业版的 Shield 插件供购买。

步骤 4 — 测试 Elasticsearch

现在,Elasticsearch 应该正在 9200 端口上运行。您可以使用 cURL 和 GET 请求进行测试。

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

您应该会收到以下响应:

Output
{ "name" : "elastic-22", "cluster_name" : "elasticsearch", "cluster_uuid" : "DEKKt_95QL6HLaqS9OkPdQ", "version" : { "number" : "7.17.1", "build_flavor" : "default", "build_type" : "deb", "build_hash" : "e5acb99f822233d62d6444ce45a4543dc1c8059a", "build_date" : "2022-02-23T22:20:54.153567231Z", "build_snapshot" : false, "lucene_version" : "8.11.1", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" }

如果您收到类似上述的响应,则表示 Elasticsearch 正常工作。如果没有,请确保您已正确按照安装说明操作,并且您已允许 Elasticsearch 完全启动的一些时间。

要执行更彻底的 Elasticsearch 检查,请执行以下命令:

  1. curl -X GET 'http://localhost:9200/_nodes?pretty'

从上述命令的输出中,您可以验证节点、群集、应用程序路径、模块等的所有当前设置。

步骤 5 — 使用 Elasticsearch

要开始使用 Elasticsearch,让我们首先添加一些数据。Elasticsearch 使用 RESTful API,对常规的 CRUD 命令做出响应: create(创建)、read(读取)、update(更新)和 delete(删除)。为了使用它,我们将再次使用 cURL 命令。

您可以像这样添加您的第一条记录:

  1. curl -XPOST -H "Content-Type: application/json" 'http://localhost:9200/tutorial/helloworld/1' -d '{ "message": "Hello World!" }'

您应该收到以下回复:

Output
{"_index":"tutorial","_type":"helloworld","_id":"1","_version":2,"result":"updated","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":1,"_primary_term":1}

使用 cURL,我们向 Elasticsearch 服务器发送了 HTTP POST 请求。请求的 URI 是 /tutorial/helloworld/1,带有几个参数:

  • tutorial 是 Elasticsearch 中数据的索引。
  • helloworld 是类型。
  • 1 是上述索引和类型下我们记录的 ID。

您可以使用 HTTP GET 请求检索此第一条记录。

  1. curl -X GET -H "Content-Type: application/json" 'http://localhost:9200/tutorial/helloworld/1'

这应该是结果输出:

Output
{"_index":"tutorial","_type":"helloworld","_id":"1","_version":1,"found":true,"_source":{ "message": "Hello, World!" }}

要修改现有条目,您可以使用 HTTP PUT 请求。

  1. curl -X PUT -H "Content-Type: application/json" 'localhost:9200/tutorial/helloworld/1?pretty' -d '
  2. {
  3. "message": "Hello, People!"
  4. }'

Elasticsearch 应该确认成功修改,如下:

Output
{ "_index" : "tutorial", "_type" : "helloworld", "_id" : "1", "_version" : 2, "result" : "updated", "_shards" : { "total" : 2, "successful" : 1, "failed" : 0 }, "_seq_no" : 1, "_primary_term" : 1 }

在上面的示例中,我们已将第一条记录的 message 修改为“Hello, People!”。随之,版本号已自动增加到 2

您可能已经注意到上述请求中的额外参数 pretty。它启用了人类可读格式,以便您可以将每个数据字段写在新行上。您还可以在检索数据时“美化”您的结果,以获得更可读的输出,方法是输入以下命令:

  1. curl -X GET -H "Content-Type: application/json" 'http://localhost:9200/tutorial/helloworld/1?pretty'

现在,响应将被格式化为人类解析:

Output
{ "_index" : "tutorial", "_type" : "helloworld", "_id" : "1", "_version" : 2, "_seq_no" : 1, "_primary_term" : 1, "found" : true, "_source" : { "message" : "Hello, People!" } } }

我们现在已经在 Elasticsearch 中添加和查询了数据。要了解其他操作,请查看API 文档

结论

您现在已经安装、配置并开始使用Elasticsearch。要进一步探索Elasticsearch的功能,请参考官方Elasticsearch文档

Source:
https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-elasticsearch-on-ubuntu-22-04