如何在 Ubuntu 22.04 上安装 Elasticsearch

server/2025/1/1 13:22:59/

简介

在本教程中,你将学习如何在 Ubuntu 22.04 服务器上安装 Elasticsearch。此外,你还将学习如何使用 Elasticsearch REST API 索引和操作数据。

Elasticsearch 是一个基于 Apache Lucene Library 的免费分布式搜索和分析引擎。它是一个快速且可扩展的分析引擎,提供了一个广泛的 API,允许你处理 JSON 请求并在几毫秒内获得反馈。这使其成为数据分析和搜索用例的理想选择。

Elasticsearch 是 ELK Stack(Elasticsearch、Logstash、Kibana)的关键组件,用于索引和存储数据。它的结构不是基于表和模式,而是基于文档,数据以键值对的形式存储。

本教程的目标是手把手教你如何在 Linux 服务器上安装 Elasticsearch。

准备工作

服务器准备

必要前提:

  • 一个充满求知欲的大脑。
  • 一台 Linux 服务器(推荐腾讯云、阿里云或雨云等)。

我将以 雨云 为例,带大家创建一台自己的云服务器,以便学习本篇文章的内容。

注册链接: https://rainyun.ivwv.site

创建雨云服务器

以下步骤仅供参考,请根据实际需求选择配置。

  • 点击 云产品服务器立即购买
  • 选择距离你较近的区域,以保证低延迟。

  • 按照自己需求选择配置,选择Ubuntu 22.04 版本,按照自己需求是否预装Docker。
  • 最后按照提示进行购买。
  • 购买后等待机器部署完毕,点击刚刚创建好的服务器,进入管理面板,找到远程连接相关信息。

  • 我们使用 PowerShell 进行 SSH 远程连接到服务器Win+R 打开运行窗口,输入 powershell 后点击确定。

  • 输入 ssh root@你的服务器IP 例如 ssh root@154.9.227.239 回车后,首次需要输入 yes,再次回车后即可登录服务器

  • 到此为止,我们的云服务器就远程连接上了。

第一步:安装 Elasticsearch

Elasticsearch 没有正式托管在 Ubuntu 的默认软件包存储库中。唯一的方法是将 Elastic 的软件包源列表添加到源列表目录。添加后,你可以使用 APT 软件包管理器进行安装。

首先,你需要添加 Elasticsearch GPG 签名密钥,以便验证 Elasticsearch 软件包。经过身份验证的软件包可确保你的系统可以通过软件包管理器信任安装在你系统上的软件包的完整性。

要添加签名密钥,请使用 curl 命令导入 Elasticsearch 公共 GPG 密钥。

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

添加 GPG 密钥后,将 Elastic 源列表添加到 sources.list.d 目录。

echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list

接下来,更新本地软件包列表 ,以通知系统新添加的存储库。

sudo apt update

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

$ sudo apt install elasticsearch

该命令将安装 Elasticsearch,还会创建一个名为 elasticsearch 的用户和组。

第二步:配置 Elasticsearch

Elasticsearch 的主要配置文件是位于 /etc/elasticsearch 目录中的 elasticsearch.yml 文件。这是一个 YAML 文件,用于存储集群、节点、内存、路径和网络设置。它是主要的配置文件,并在很大程度上控制着 Elasticsearch 的功能。

为了根据你的偏好自定义 Elasticsearch,需要进行一些配置。因此,请使用你喜欢的文本编辑器访问该文件。在本示例中,我们使用 nano 编辑器。

sudo nano /etc/elasticsearch/elasticsearch.yml

首先,指定一个集群名称。请注意,只有当节点的集群名称与同一集群中的其他节点相同时,该节点才能加入集群。

滚动到 Cluster 部分,并取消注释 cluster.name 指令。为你的集群提供一个描述性的名称。为了演示目的,我们将其重命名为 my-cluster

# ---------------------------------- Cluster -----------------------------------
#
# Use a descriptive name for your cluster:
#
cluster.name: my-cluster
#

接下来,配置节点名称。这由 node.name 指令定义。默认情况下,此设置为 node-1。你可以通过取消注释并提供你喜欢的名称来手动配置它。在这里,我们将其命名为 sample-node

# ------------------------------------ Node ------------------------------------
#
# Use a descriptive name for the node:
#
node.name: sample-node
#

默认情况下,Elasticsearch 侦听来自 localhost 或 IP 地址 127.0.0.1 的流量。要查询另一个服务器,请将 network.host 指令设置为相应的 IP 地址。向下滚动到“网络”部分,并将其设置为你首选的 IP。在我们的例子中,我们将其设置为 localhost

# ---------------------------------- Network -----------------------------------
#
# By default Elasticsearch is only accessible on localhost. Set a different
# address here to expose this node on the network:
#
network.host: localhost
#

最后,指定 Elasticsearch 侦听的 HTTP 端口。默认情况下,这是端口 9200。你可以保持原样或提供不同的端口。

完成修改设置后,保存更改并退出配置文件。接下来,运行以下命令以通知系统所做的更改。

sudo systemctl daemon-reload

接下来,启用 Elasticsearch 服务以在启动时启动。

sudo systemctl enable elasticsearch

然后如下所示启动 Elasticsearch 服务。这通常需要大约一分钟,并且一旦你按下 ENTER 键,该命令可能会显示为卡住或冻结。所以,不要惊慌。耐心一点就好。

sudo systemctl start elasticsearch

要确认 Elasticsearch 正在运行,请执行以下命令:

sudo systemctl status elasticsearch

从输出中,你可以看到 Elasticsearch 正在运行。

第三步:测试 Elasticsearch

至此,Elasticsearch 已安装并在端口 9200 上运行,这是其默认端口。测试 Elasticsearch 是否工作的最简单方法是使用 curl 命令 发送 GET 请求来查询 Elasticsearch 服务器,如下所示。

curl -X GET '<http://localhost:9200>'

如果你的安装顺利进行,你应该以 JSON 格式获得以下输出,其中显示了服务器详细信息。

有关 Elasticsearch 服务器的深入信息,请运行以下命令:

curl -X GET '<http://localhost:9200/_nodes?pretty>'

?pretty 指令将输出格式化为人类可读的格式。

第四步:配置 UFW 防火墙

目前,任何拥有你的服务器 IP 的人都可以访问 Elasticsearch HTTP API。你可能希望将访问权限限制为仅你的 IP 地址,而不是其他人。

你可以通过 配置 UFW 防火墙 来实现此目的,方法是应用以下规则,其中 [你的-ip-地址] 是你的公共 IP 地址。

sudo ufw allow from [你的-ip-地址] to any port 9200

要添加另一个 IP 地址,请再次运行相同的命令,这次使用不同的 IP 地址。

如果防火墙未启用,请确保启用它。

sudo ufw enable

重新加载防火墙以使规则生效。

sudo ufw reload

然后验证防火墙状态。

sudo ufw status

第五步:使用 Elasticsearch

Elasticsearch 使用 RESTful API,允许它执行与 CRUD 操作相对应的基本操作,例如创建、读取、更新和删除。与这些操作等效的 HTTP 方法分别是 POSTGETPUTDELETE

要开始使用 Elasticsearch,你需要先使用一些数据填充索引。索引相当于关系数据库中的数据库。它是文档的集合,每个文档都包含按键值对组织的字段,其中包含数据。

要创建文档,你需要使用索引名称、类型和 ID,向 API 发送 PUT 请求(使用 Curl 命令)。

让我们索引一些内容。在下面的命令中,我们创建了一个名为 movies 的索引,类型为 genre,ID 为 1。该索引以 JSON 格式存储有关电影的信息。

curl -XPOST -H "Content-Type: application/json" 'http://localhost:9200/movies/genre/1' -d \\'{"title": "Designated Survivor","director": "David Guggenheim","year": 2016,"genre": ["Drama", "Crime"]}'

你应该获得与我们类似的输出。

要检索此条目,请发送 HTTP GET 请求,如下所示。

curl -X GET -H "Content-Type: application/json" 'http://localhost:9200/movies/genre/1'

你应该获得以下输出。

现在,我们将使用 HTTP PUT 请求修改条目。

curl -X PUT -H "Content-Type: application/json" 'http://localhost:9200/movies/genre/1?pretty' -d \\
'{"title": "Shooter","director": "Antoine Fuqua","year": 2007,"genre": ["Drama", "Crime"]}'

Elasticsearch 将确认所做的更改并显示以下输出。修改电影记录后,请注意版本号已自动增加到 2。这表示已对文档进行了修改。

要验证所做的更改,请通过发送 GET 请求来查看记录。

curl -X GET -H "Content-Type: application/json" 'http://localhost:9200/movies/genre/1?pretty'

命令末尾的 ?pretty 部分将输出格式化为更易于人类阅读的格式。

结论

完成本教程中的每个步骤后,你已成功安装和配置了 Elasticsearch,并使用 HTTP POST、GET 和 PUT 方法测试了其功能。

有关 Elasticsearch 的更多信息,请参阅 Elasticsearch 官方文档。

雨云 - 新一代云服务提供商: https://rainyun.ivwv.site
我的博客:https://blog.ivwv.site


http://www.ppmy.cn/server/154280.html

相关文章

【落羽的落羽 C语言篇】自定义类型——联合体、枚举

文章目录 一、联合体1. 联合体类型的声明2. 联合体的特点3. 联合体的大小4. 联合体和结构体的对比 二、枚举1. 枚举类型的声明2. 枚举类型的优点 一、联合体 1. 联合体类型的声明 联合体像结构体一样&#xff0c;也是由一个或多个成员构成&#xff0c;这些成员可以是不同的类…

【大模型】wiki中文语料的word2vec模型构建

在自然语言处理&#xff08;NLP&#xff09;任务中&#xff0c;词向量&#xff08;Word Embedding&#xff09;是一个非常重要的概念。通过将词语映射到一个高维空间中&#xff0c;我们能够以向量的形式表达出词语之间的语义关系。Word2Vec作为一种流行的词向量学习方法&#x…

SPI接口

一、SPI总线 SPI接口是Motorola 首先提出的全双工三线/四线同步串行外围接口采用主从模式&#xff08;Master Slave&#xff09;架构。 时钟由Master控制&#xff0c;在时钟移位脉冲下&#xff0c;数据按位传输&#xff0c;高位在前&#xff0c;低位在后&#xff08;MSB firs…

如何在centos系统上挂载U盘

在CentOS上挂载NTFS格式的U盘,需要执行一系列步骤,包括识别U盘设备、安装必要的软件、创建挂载点,并最终挂载U盘。以下是在CentOS上挂载NTFS格式U盘的详细步骤: 一、准备工作 确认CentOS版本: 确保你的CentOS系统已经安装并正常运行。不同版本的CentOS在命令和工具方面可能…

iDP3复现代码数据预处理全流程(二)——vis_dataset.py

vis_dataset.py 主要作用在于点云数据的可视化&#xff0c;并可以做一些简单的预处理 关键参数基本都在 vis_dataset.sh 中定义了&#xff0c;需要改动的仅以下两点&#xff1a; 1. 点云图像保存位置&#xff0c;因为 dataset_path 被设置为了绝对路径&#xff0c;因此需要相…

动态规划简介:爱的初体验

动态规划是一个让人欲仙欲死、死去活来的科目&#xff0c;茫然无措时让你痛不欲生&#xff0c;柳暗花明时让你喜不自胜。 小伙&#xff0c;不能啊&#xff01; 你要心怀有爱&#xff0c;你要用全身心的爱来迎接今天&#xff0c;迎接动态规划。 一、动态规划的概念 动态规划…

不安全物联网的轻量级加密:综述

Abstract 本文综述了针对物联网&#xff08;IoT&#xff09;的轻量级加密解决方案。这项综述全面覆盖了从轻量级加密方案到不同类型分组密码的比较等多个方面。同时&#xff0c;还对硬件与软件解决方案之间的比较进行了讨论&#xff0c;并分析了当前最受信赖且研究最深入的分组…

Python 敲电子木鱼,见机甲佛祖,修赛博真经

Python 敲电子木鱼&#xff0c;见机甲佛祖&#xff0c;修赛博真经 相关资源文件已经打包成EXE文件&#xff0c;可下载相关资源压缩包后双击直接运行程序&#xff0c;且文章末尾已附上相关源码&#xff0c;以供大家学习交流&#xff0c;博主主页还有更多Python相关程序案例&…