Elasticsearch centos7 的安装部署

举报
yd_299763254 发表于 2026/10/18 14:20:49 2026/10/18
【摘要】 介绍Elasticsearch是一个实时分布式搜索和分析数据的平台。它的流行是由于它的易用性,强大的功能和可扩展性。Elasticsearch支持RESTful操作。这意味着您可以将HTTP方法(GET,POST,PUT,DELETE等)与HTTP URI(/ collection / entry)结合使用来操作数据。直观的RESTful方法既对开发人员友好,对用户也是友好的,这也是Elas...

介绍
Elasticsearch是一个实时分布式搜索和分析数据的平台。它的流行是由于它的易用性,强大的功能和可扩展性。

Elasticsearch支持RESTful操作。这意味着您可以将HTTP方法(GET,POST,PUT,DELETE等)与HTTP URI(/ collection / entry)结合使用来操作数据。直观的RESTful方法既对开发人员友好,对用户也是友好的,这也是Elasticsearch流行的原因之一。

Elasticsearch是一个免费的开源软件,背后有一个坚实的公司 -Elastic。这种组合使其适用于从个人测试到企业集成的任何地方。

本文将向您介绍Elasticsearch,并向您展示如何安装,配置和开始使用它。

课程准备
在学习本教程之前,请确保完成以下先决条件:

CentOS 7 腾讯CVM,没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器。
非root sudo用户。
第1步 - 安装Java
首先,您需要在腾讯CVM上使用Java Runtime Environment(JRE),因为Elasticsearch是用Java编程语言编写的。您可以将本机CentOS OpenJDK程序包用于JRE。此JRE是免费的,并且受到良好支持,并通过CentOS Yum安装管理器自动管理。

您可以使用以下命令安装最新的OpenJDK:

sudo yum install java-1.8.0-openjdk.x86_64
要验证是否已安装并可以使用JRE,请运行以下命令:

java -version
结果应如下所示:

openjdk version “1.8.0_65”
OpenJDK Runtime Environment (build 1.8.0_65-b17)
OpenJDK 64-Bit Server VM (build 25.65-b01, mixed mode)
当您使用Elasticsearch并开始寻求更好的Java性能和兼容性时,您可以选择安装Oracle的专有Java(Oracle JDK 8)。

第2步 - 下载和安装Elasticsearch
Elasticsearch可以直接从elastic.co下载zip,tar.gz,deb或rpm包。对于CentOS,最好使用本机rpm包,它将安装运行Elasticsearch所需的一切。

在撰写本文时,最新的Elasticsearch版本是1.7.3。使用以下命令将其下载到您选择的目录中:

然后使用如下rpm命令以通常的CentOS方式安装它:

sudo rpm -ivh elasticsearch-1.7.3.noarch.rpm
这导致 在/usr/share/elasticsearch/中安装Elasticsearch并将其配置文件放入/etc/elasticsearch中并在/etc/init.d/elasticsearch中添加其init脚本。

要确保Elasticsearch使用腾讯CVM自动启动和停止,请使用以下命令将其init脚本添加到默认运行级别:

sudo systemctl enable elasticsearch.service
第3步 - 配置弹性
现在已经安装了Elasticsearch及其Java依赖项,现在是时候配置Elasticsearch了。

Elasticsearch配置文件位于/etc/elasticsearch目录中。有两个文件:

elasticsearch.yml - 配置Elasticsearch服务器设置。这是存储除日志记录之外的所有选项的地方,这就是我们对此文件最感兴趣的原因。
logging.yml - 提供日志记录配置。首先,您不必编辑此文件。您可以保留所有默认日志记录选项。您可以在默认情况下在/var/log/elasticsearch中找到生成的日志。
第一个可以在任何Elasticsearch服务器上来定制的变量是elasticsearch.yml中的 node和cluster。顾名思义,node.name指定服务器(节点)的名称以及与之关联的集群。

如果不自定义这些变量,node.name将根据腾讯CVM主机名自动分配 。同时cluster.name将被自动设置为默认的集群的名称。

Elasticsearch的自动发现功能会使用该cluster.name值来自动发现Elasticsearch节点并将其关联到集群。因此,如果不更改默认值,则可能在群集中的同一网络上找到了不需要的节点。

要开始编辑主elasticsearch.yml配置文件:

sudo nano /etc/elasticsearch/elasticsearch.yml
删除node.name和cluster.name行开头的字符#来取消注释,然后更改它们的值。您在/etc/elasticsearch/elasticsearch.yml文件中的第一个配置更改应如下所示:

…
node name: “My First Node”
cluster name: mycluster1
…
另一个重要的设置是服务器的角色,可以是“主”或“从”。“大师”负责集群的健康和稳定。在具有大量群集节点的大型部署中,建议使用多个专用“主”。通常,专用的“主”不会存储数据或创建索引。因此,不应该有超载的可能性,从而可能危及群集健康。

“从属”被用作“workhorse”,可以加载数据任务。即使“从属”节点过载,也不应严重影响群集运行状况,前提是还有其他节点需要额外负载。

调用确定服务器角色的设置叫node.master。如果您只有一个Elasticsearch节点,则应该将此选项注释掉,以使其保持其默认值true- 即唯一节点也应该是主节点。或者,如果要将节点配置为从属节点,请删除该node.master行开头的字符#,并将值更改为false:

…
node.master: false
…
另一个重要的配置选项是node.data,该选项确定节点是否存储数据。在大多数情况下,此选项应保留其默认值(true),但有两种情况您可能希望不在节点上存储数据。一个是节点是专用的“主”,正如我们已经提到的那样。另一种是当节点仅用于从节点获取数据和聚合结果时。在后一种情况下,节点将充当“搜索负载平衡器”。

同样,如果您只有一个Elasticsearch节点,则应将此设置注释掉,以便保留默认true值。否则,要禁用本地存储数据,请取消注释以下行并将值更改为false:

…
node.data: false
…
另外两个重要的选择是index.number_of_shards和index.number_of_replicas。第一个决定索引将分成多少个(分片)。第二个定义将在群集中分发的副本数。拥有更多分片可以提高索引性能,而拥有更多副本可以提高搜索速度。

假设您仍在单个节点上探索和测试Elasticsearch,最好只从一个分片开始,而不是复制品。因此,它们的值应设置为以下值(确保删除开头行的#):

…
index.number_of_shards: 1
index.number_of_replicas: 0
…
您可能感兴趣的最后一个设置是path.data,改设置确定数据存储路径。默认路径是/var/lib/elasticsearch。在生产环境中,建议您使用专用分区和挂载点来存储Elasticsearch数据。在最好的情况下,此专用分区将是一个单独的存储介质,可提供更好的性能和数据隔离。您可以通过取消注释该path.data行并更改其值来指定其他的path.data路径:

…
path.data: /media/different_media
…
完成所有更改后,请保存并退出该文件。现在,您可以使用以下命令首次启动Elasticsearch:

sudo service elasticsearch start
在您使用Elasticsearch之前,请至少给它10秒钟让他完全启动。否则,您可能会收到无法连接的错误。

第4步 - 保护弹性
Elasticsearch没有内置安全性,可以由任何可以访问HTTP API的人控制。

第一个安全调整是防止公共访问。要删除公共访问,请编辑该elasticsearch.yml文件:

sudo nano /etc/elasticsearch/elasticsearch.yml
找到包含network.bind_host的行,通过删除开头行的字符#取消注释,然后将值更改为localhost,他将如下所示:

…
network.bind_host: localhost
…
警告:由于Elasticsearch没有任何内置安全性,因此不要将此设置为任何您无法控制或信任的服务器可访问的IP地址,这一点非常重要。不要将Elasticsearch绑定到公共或共享专用网络 IP地址!

此外,为了提高安全性,您可以禁用用于评估自定义表达式的动态脚本。通过制作自定义恶意表达式,攻击者可能会破坏您的环境。

要禁用自定义表达式,请在/etc/elasticsearch/elasticsearch.yml文件末尾添加以下行:

…
script.disable_dynamic: true
…
要使上述更改生效,您必须使用以下命令重新启动Elasticsearch:

sudo service elasticsearch restart
第5步 - 测试
到目前为止,Elasticsearch应该在端口9200上运行。您可以使用curl,命令行客户端URL传输工具和一个简单的GET请求来测试它,如下所示:

curl -X GET ‘ocalhost:9200’
您应该看到以下响应:

{
“status” : 200,
“name” : “CentOS Node”,
“cluster_name” : “mysqluster”,
“version” : {
“number” : “1.7.3”,
“build_hash” : “05d4530971ef0ea46d0f4fa6ee64dbc8df659682”,
“build_timestamp” : “2015-10-15T09:14:17Z”,
“build_snapshot” : false,
“lucene_version” : “4.10.4”
},
“tagline” : “You Know, for Search”
}
如果您看到类似于上面的响应,则Elasticsearch正常工作。如果没有,请确保您已正确遵循安装说明,并且您已经有足够的时间让Elasticsearch完全启动。

第6步 - 使用Elasticsearch
要开始使用Elasticsearch,我们先添加一些数据。如前所述,Elasticsearch使用RESTful API,它响应常用的CRUD命令:Create,Read,Update和Delete。为了使用它,我们将再次使用curl。

您可以使用以下命令添加第一个条目:

您应该看到以下响应:

{“_index”:“tutorial”,“_type”:“helloworld”,“_id”:“1”,“_version”:1,“created”:true}
使用curl,我们向Elasticseach服务器发送了一个HTTP POST请求。请求的URI是/tutorial/helloworld/1。了解这里的参数非常重要:

tutorial 是Elasticsearch中数据的索引。
helloworld 是类型。
1 是我们在上述索引和类型下的条目的id。
您可以使用HTTP GET请求检索此第一个条目,如下所示:

结果应如下所示:

{“_index”:“tutorial”,“_type”:“helloworld”,“_id”:“1”,“_version”:1,“found”:true,“_source”:{ “message”: “Hello World!” }}
要修改现有条目,您可以使用HTTP PUT请求,如下所示:

{
“message”: “Hello People!”
}’
Elasticsearch应该承认这是一个成功的修改,并且如下所示:

{
“_index” : “tutorial”,
“_type” : “helloworld”,
“_id” : “1”,
“_version” : 2,
“created” : false
}
在上面的例子中,我们将第一个条目的message修改为“Hello People!”。这样,版本号自动增加到2。

您可能已经注意到上述请求中的额外参数pretty。它支持人类可读的格式,因此您可以在新行上写入每个数据字段。您还可以在检索数据时“美化”您的结果并获得更好的输出,如下所示:

现在响应将采用更好的格式:

{
“_index” : “tutorial”,
“_type” : “helloworld”,
“_id” : “1”,
“_version” : 2,
“found” : true,
“_source”:{ “message”: “Hello World!” }
}
到目前为止,我们已经在Elasticsearch中添加并查询了数据。要了解其他操作,请查看API文档。

结论
这就是安装,配置和开始使用Elasticsearch的难易程度。一旦你玩了足够的手动查询,你的下一个任务就是从你的应用程序开始使用它。

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。