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 的强大功能,这些功能经过量身定制,可满足现代数据管理和分析的需求。