如何在 Debian 12、11 或 10 Linux 上安装 Elasticsearch 8

Elasticsearch 8 是一款功能强大且灵活的开源搜索和分析引擎,以其可扩展性、速度和实时数据索引功能而闻名。8.x 版本带来了重大增强,包括改进的安全功能、简单的证书管理、丰富的文本搜索功能和更高效的查询执行。它还引入了对运行时字段的本机支持,可以更轻松地自定义数据的索引和搜索方式,而无需更改底层架构。这些进步使 Elasticsearch 8.x 成为管理和分析大量数据的强大解决方案。

要在 Debian 12、11 或 10 上安装 Elasticsearch 8,您可以使用 Elasticsearch 提供的官方 APT 存储库。本指南将引导您完成设置 Elasticsearch 的步骤,确保您能够使用最新的功能和改进。

在安装 Elasticsearch 之前更新 Debian

第一步,你需要确保你的 Debian Linux 系统已更新。此步骤将把所有现有软件更新到最新版本,并为安装系统做好准备。

运行以下命令来更新你的 Debian 系统:

sudo apt update && sudo apt upgrade

安装必要的软件包

在 Debian 上安装 Elasticsearch 8 之前,我们必须满足特定的先决条件。这涉及安装一些必需的软件包,例如 software-properties-common、apt-transport-https 和 curl。这些软件包有助于通过网络进行软件管理和数据传输。

通过运行以下命令安装必要的软件包:

sudo apt install software-properties-common apt-transport-https curl -y

在 Debian 上添加 Elasticsearch 8 APT 存储库

接下来,我们将 Elasticsearch APT 存储库添加到我们的 Debian Linux 系统中。首先,我们将导入 Elasticsearch 的 GPG 密钥,以确保您正在安装的软件的真实性。运行以下命令导入 GPG 密钥:

curl -fSsL https://artifacts.elastic.co/GPG-KEY-elasticsearch | gpg --dearmor | sudo tee /usr/share/keyrings/elasticsearch-8.gpg > /dev/null

接下来,让我们导入 Elasticsearch 存储库。这将允许我们使用 apt 包管理器:

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

更新 APT 索引缓存

将 Elasticsearch 存储库添加到系统后,我们必须更新 APT 软件包索引。这可确保 APT 了解新添加的存储库中的新软件包。运行以下命令来更新 APT 索引:

sudo apt update

通过 APT 命令安装 Elasticsearch 8

现在我们的系统已经准备好并且 APT 索引已更新,我们可以安装 Elasticsearch 8。使用以下命令安装 Elasticsearch:

sudo apt install elasticsearch

注意:如果同一 Elasticsearch 存储库存在两个条目,则 apt 更新期间会遇到错误。如果您遇到“重复的 sources.list 条目”错误,请检查 /etc/apt/sources.list.d/elasticsearch-8.x.list 中是否有重复的条目,或者在 /etc/apt/sources.list.d/ 和 /etc/apt/sources.list 文件中找到重复的条目。

安装后在 Debian 上启用 Elasticsearch

安装后,Elasticsearch 服务在启动时被禁用,默认情况下处于非活动状态。要启用 Elasticsearch 服务并将其设置为在启动时自动启动,请使用以下命令 systemctl 命令:

sudo systemctl enable elasticsearch.service --now

配置 Elasticsearch 8

在 Debian Linux 系统上管理 Elasticsearch 8 的下一个阶段是对其进行配置。

了解默认 Elasticsearch 设置

在全新安装的 Elasticsearch 中,软件会将其处理和存储的数据放置在 /var/lib/elasticsearch 目录中。如果您需要修改配置,则 /etc/elasticsearch 是您的首选目录。如果 Java 启动选项需要调整,则可以在 /etc/default/elasticsearch 配置文件中调整这些设置。

这些标准设置适用于 Elasticsearch 仅在本地主机上运行的独立服务器。但是,如果您打算建立 Elasticsearch 集群或允许远程连接,则需要修改默认配置。

完善 Elasticsearch 配置文件

Elasticsearch 配置文件包含许多参数,可以根据您的独特需求进行调整。要打开此文件,请执行以下命令:

sudo nano /etc/elasticsearch/elasticsearch.yml

一个重要的参数是 cluster.name,它指定了节点所属的集群名称。默认情况下,这是“elasticsearch”,但在生产环境中建议使用更独特的名称。

以下是一个例子:

cluster.name: my_application

node.name 选项是另一个重要的选项,用于设置 Elasticsearch 节点的名称。此名称对于顺利管理至关重要,尤其是在处理多个节点时。

以下是一个例子:

node.name: node-1

在 Debian 上使用 HTTPS 配置 Elasticsearch 8

以下内容介绍了如何为您的 Elasticsearch 安装配置 HTTPS。加密对于保护数据至关重要,启用 Elasticsearch 8 使用 HTTPS 可确保数据在节点和客户端之间安全传输。

生成 SSL 证书

配置 Elasticsearch 以使用 HTTPS 的第一步是生成 SSL 证书。此证书将加密服务器和客户端之间的数据。Elasticsearch 有一个名为 elasticsearch-certutil 的内置工具,您可以使用它来生成自签名证书。运行以下命令:

sudo /usr/share/elasticsearch/bin/elasticsearch-certutil cert --silent --pem -out config/elastic-certificates.p12

这将在 config 目录中创建一个 .p12 文件。此文件包含私钥和公钥证书。必须保护此文件并确保未经授权的用户无法访问它。

更新 Elasticsearch 8 配置

接下来,您需要更新位于 /etc/elasticsearch/elasticsearch.yml 的 Elasticsearch 配置文件,以包含证书和私钥的路径。打开配置文件并添加以下行:

xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: elastic-certificates.p12

这些设置为传输层启用 SSL,指定我们使用证书进行 SSL 验证,并定义证书和私钥的路径。

允许远程访问(可选)

Elasticsearch 默认配置为仅监听 localhost。但是,如果需要远程访问,可以进行调整。查找 Network 部分,通过删除前面的 # 取消注释 network.host 行。将现有值替换为您的内部私有 IP 地址或外部 IP 地址。

以下是一个例子:

# network.host: 192.168.0.1

在此示例中,network.host 已取消注释并调整为内部私有 IP 地址。

为了安全起见,建议指定单独的 IP 地址。但是,您可以将网络接口更改为监听所有 IP 地址,方法是将连接到服务器的多个内部或外部 IP 地址设置为 0.0.0.0。

进行必要的更改后,保存配置文件(CTRL+O 保存,CTRL+X 退出)。

要强制配置文件更改,请使用以下命令重新启动 Elasticsearch 服务:

sudo systemctl restart elasticsearch

修改远程连接的 UFW 防火墙规则

如果您已将 Elasticsearch 配置为允许远程连接,则调整防火墙规则以适应这些连接至关重要。简易防火墙 (UFW) 可以协助完成此操作。

您可以通过执行以下命令允许特定 IP 地址连接到 Elasticsearch:

sudo ufw allow from <IP Address> to any port 9200

不要忘记更换替换为您希望允许连接的实际 IP 地址。此命令将为指定的 IP 地址打开端口 9200,允许其与 Elasticsearch 交互。

例如,如果您希望允许 IP 地址 192.168.0.2 连接,则命令为:

sudo ufw allow from 192.168.0.2 to any port 9200

随后,您的 Debian 服务器将允许来自 192.168.0.2 的流量通过端口 9200 访问 Elasticsearch。请记住,服务器的安全性至关重要,因此请确保您只授予受信任的 IP 地址访问权限。

验证 Elasticsearch 8 配置

修改 Elasticsearch 配置后,务必验证更改是否已正确实施以及 Elasticsearch 实例是否按预期运行。

检查 Elasticsearch 8 服务状态

首先,检查 Elasticsearch 服务的状态以确认其处于活动状态并正在运行。您可以使用以下命令执行此操作:

sudo systemctl status elasticsearch

此命令将输出有关 Elasticsearch 服务的信息,包括它是否处于活动状态并正在运行。如果没有,您可能需要解决问题或检查配置更改。

测试远程访问(可选)

如果您已启用远程访问,则可以通过尝试从远程计算机连接到 Elasticsearch 实例来测试它。如上一节所述,您连接的 IP 地址必须在防火墙规则中允许。

您可以使用 curl 命令来实现此目的:

curl https://<Your_Elasticsearch_IP>:9200

代替替换为您的 Elasticsearch 服务器的 IP 地址。如果成功,此命令应返回有关您的 Elasticsearch 实例的信息。

验证数据完整性

最后,验证 Elasticsearch 数据的完整性至关重要,尤其是当您更改了配置中的数据目录时。Elasticsearch 提供了可用于检查数据状态的 API。

例如,要获取所有索引的状态,请使用以下命令:

curl -X GET "https://localhost:9200/_cat/indices?v=true&pretty"

此命令列出 Elasticsearch 实例中的所有索引及其运行状况。检查索引的运行状况以确保数据安全且可访问。

注意:请记住,维护数据的完整性和安全性始终是重中之重。务必仔细检查更改、验证配置并定期监控 Elasticsearch 实例。这将帮助您使用 Elasticsearch 维护可靠、高效且安全的数据管理系统。

通过 cURL 与 Elasticsearch 8 交互

本节将探讨与 Elasticsearch 8 实例交互的常用命令。我们将使用 curl 命令行工具,一个使用不同协议传输数据的灵活库。

删除索引

Elasticsearch 索引是一组具有相似特征的文档。如果您有一个名为 samples 的索引想要删除,可以使用以下命令完成此操作:

curl -X DELETE 'https://localhost:9200/samples'

此命令向指定的 URL 发送 HTTP DELETE 请求,告诉 Elasticsearch 删除样本索引。

列出所有指数

要检索 Elasticsearch 实例中所有索引的列表,请使用 _cat/indices 端点和 GET 请求,如下所示:

curl -X GET 'https://localhost:9200/_cat/indices?v'

响应将列出所有索引,包括索引的健康状况、状态、大小和文档数量。

从索引中获取文档

要从特定索引中获取所有文档(例如,sample),请使用 _search 端点:

curl -X GET 'https://localhost:9200/sample/_search'

此命令检索示例索引中存储的所有文档。

使用 URL 参数搜索

您可以使用 Lucene 的查询语法进行基本的文本搜索。例如,如果您想查找学校字段为 Harvard 的文档,您可以使用:

curl -X GET https://localhost:9200/samples/_search?q=school:Harvard

此命令使用查询的 q 参数向 _search 端点发送 GET 请求。

使用 Elasticsearch Query DSL 进行搜索

对于更复杂的查询,您可能更喜欢使用 Elasticsearch 的查询 DSL,它允许您使用 JSON 来定义查询。此格式更易读,更易于调试复杂查询。

以下是一个例子:

curl -XGET --header 'Content-Type: application/json' https://localhost:9200/samples/_search -d '{
      "query" : {
        "match" : { "school": "Harvard" }
    }
}'

此命令与上一个命令相同,但使用 JSON 进行查询定义。这样,该命令更具可读性,尤其是在处理更复杂的查询时。

添加和更新文档

要将新文档添加到索引,您可以将 PUT 方法与 _doc 端点结合使用。例如,要将 ID 为 1 且学校字段为 Harvard 的文档添加到 samples 索引,您可以使用:

curl -XPUT --header 'Content-Type: application/json' https://localhost:9200/samples/_doc/1 -d '{
   "school" : "Harvard"
}'

要更新文档,可以将 POST 方法与 _update 端点结合使用。例如,要将 students 字段添加到我们刚刚创建的文档中,您可以使用:

curl -XPOST --header 'Content-Type: application/json' https://localhost:9200/samples/_doc/1/_update -d '{
"doc" : {
               "students": 50000}
}'

此命令告诉 Elasticsearch 更新 samples 索引中 ID 为 1 的文档,添加一个值为 50000 的学生字段。

这些命令只是你可以用 Elasticsearch 完成的一小部分。Elasticsearch 查询 DSL

在 Debian 12、11 或 10 上管理 Elasticsearch 8

本部分将深入介绍从 Debian Linux 服务器中删除 Elasticsearch 8 的过程。您可能出于多种原因想要这样做,例如该软件不再适合您的要求,或者您计划切换到替代解决方案。无论您出于何种原因,下面概述的步骤都将引导您完成该过程。

从 Debian 中删除 Elasticsearch 8

从服务器中删除 Elasticsearch 需要一个简单的命令。但是,请记住,此操作是不可逆的,并将删除所有相关数据。以下是要执行的命令:

sudo apt remove elasticsearch

运行上述命令将有效卸载 Elasticsearch,释放任何先前分配的系统资源。

删除 Elasticsearch APT 存储库

卸载后,Elasticsearch 存储库仍会保留在您的系统中。如果您确定以后不会重新安装 Elasticsearch,则最好将其删除,以避免不必要的混乱。

删除 Elasticsearch 存储库的方法如下:

sudo rm /etc/apt/sources.list.d/elasticsearch-8.list

上述命令将从您的 Debian Linux 服务器中删除 Elasticsearch 8 存储库。

刷新存储库列表

最后一步是刷新 apt 包列表。此步骤至关重要,以确保您的系统不会考虑 Elasticsearch 8 进行未来的更新或安装。

更新存储库列表的命令如下:

sudo apt update

结论

在 Debian 系统上成功安装 Elasticsearch 8 后,您可以利用其高级搜索和分析功能来高效地管理和分析数据。定期更新 Elasticsearch 以利用最新功能和安全增强功能。享受 Elasticsearch 8.x 的强大功能,这些功能经过量身定制,可满足现代数据管理和分析的需求。

Joshua James
跟我来
Joshua James 的最新帖子 (查看全部)

发表评论