Elasticsearch从零开始搭建ES集群并且集成到Springboot,更好的服务电商类等需要全文索引的项目

Posted Smily清禾酥酒

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Elasticsearch从零开始搭建ES集群并且集成到Springboot,更好的服务电商类等需要全文索引的项目相关的知识,希望对你有一定的参考价值。

从零开始搭建Elasticsearch集群(一)

从零开始搭建Elasticsearch集群(一)

简单介绍下Elasticsearch,以及为何使用它

最近公司的电商项目越来越庞大,功能需求点也越来越多,各种C端对查询和检索的要求也越来越高,是时候在项目中引入全文检索了。
ElasticSearch 是一个基于 Lucene 的搜索服务器,它提供了一个分布式多用户能力的全文搜索引擎,并且是基于Java 开发的,我记得很久之前ES还不流行的时候,我们公司使用的是solr,两者都是基于Lucene的全文搜索服务,其实还都挺好用,使用方式大同小异,现在使用ES的公司越来越多,很多大型门户网站或者电商也使用了ES。既然使用ES那肯定不能使用单机版,单机就是一个demo自己玩玩可以,万万是不能够上生产环境的,所以我们必须学会使用集群搭建。

下载Elasticsearch

ES的官网:https://www.elastic.co/cn/上下载最新稳定版本,我现在使用的版本是8.6.1(elasticsearch-8.6.1-linux-x86_64.tar.gz),下载下来是一个压缩包。因为服务器是linux服务器,所以整个是基于linux进行安装的。

准备服务器

在高可用和高性能方面来说一般要3个以上的服务器,我这开发环境有限,就只安装2台了
192.168.X.111 master
192.168.X.113 slave

解压安装

#下载成功后将压缩包放到到home/elasticsearch目录下面(自己新建一个elasticsearch文件夹),进入目录进行解压
cd /home/elasticsearch/
#解压
tar -zxvf elasticsearch-8.6.1-linux-x86_64.tar.gz

解压之后的目录大概是这样

配置文件elasticsearch.yml修改

原始的文件中,都是配置的介绍和使用方式,我这里挂出我的配置
master配置:

#集群名称
cluster.name: ESsearch
#结点名称 多个结点名称不同
node.name: es_node_1
#服务器地址
network.host: 192.168.X.111
#端口号
http.port: 9200
transport.profiles.default.port: 9300
#其他结点的路径
discovery.seed_hosts: ["192.168.10.X:9300", "192.168.10.X:9300"]
cluster.initial_master_nodes: ["es_node_1", "es_node_2"]

# 允许通配符删除索引
action.destructive_requires_name: true

bootstrap.memory_lock: true
xpack.security.enabled: false

#索引和日志储存路径
path.data: /home/elasticsearch/elasticsearch-8.6.1/data
path.logs: /home/elasticsearch/elasticsearch-8.6.1/logs

#是否支持跨域
http.cors.enabled: true
http.cors.allow-origin: /.*/

slave配置(如果多个节点,根据需要同样配置多个就行):

#集群名称
cluster.name: ESsearch
#结点名称 多个结点名称不同
node.name: es_node_2
#服务器地址
network.host: 192.168.10.113
#端口号
http.port: 9200
transport.profiles.default.port: 9300
#其他结点的路径
discovery.seed_hosts: ["192.168.10.111:9300", "192.168.10.113:9300"]
cluster.initial_master_nodes: ["es_node_1", "es_node_2"]

# 允许通配符删除索引
action.destructive_requires_name: true

bootstrap.memory_lock: true
xpack.security.enabled: false

#索引和日志储存路径
path.data: /home/elasticsearch/elasticsearch-8.6.1/data
path.logs: /home/elasticsearch/elasticsearch-8.6.1/logs

#是否支持跨域
http.cors.enabled: true
http.cors.allow-origin: /.*/

注意:bootstrap.memory_lock项要设置为true,锁定物理内存地址,防止es内存被交换,从而提高ES性能;但是设置以后因为服务器配置不同可能会启动报错
修改文件/etc/security/limits.conf

执行vim /etc/security/limits.conf
添加以下内容:
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
在以下配置文件中添加参数:
vim /etc/sysctl.conf
vm.max_map_count=655360
执行sysctl -p
#重启服务配置
systemctl daemon-reload

调整JVM运行内存

进入config目录下的jvm.options文件,本地服务器内存真的不够。。。。只能调整
增加参数:
-Xms2g
-Xmx2g

切换用户启动(重要)

为了确保安全性,ES不允许使用root用户进行启动,当然,为了安全考虑我们本身在使用服务器时也不建议使用root用户直接操作,因为我是开发环境,一般直接就root开整了,所以需要切换用户后再进行启动,如果已经有用户了就不用创建了

#创建用户组
groupadd elsearch
#创建用户
useradd elsearch -g elsearch -p 123456
#授予用户权限
chown -R elsearch:elsearch /home/elasticsearch/elasticsearch-8.6.1/
#切换用户
su - elsearch
#然后进入安装bin目录
cd /home/elasticsearch/elasticsearch-8.6.1/
#后台启动
./bin/elasticsearch -d

创建完毕进行访问查看

至此,集群启动完毕,可以单独访问每台服务器:
http://192.168.X.111:9200
http://192.168.X.113:9200

也可以访问http://192.168.X.111:9200/_cat/nodes查看各节点情况:

下一篇,详细介绍下如何安装IK分词器和kibana可视化界面
传送门:从零开始搭建Elasticsearch集群(二)

以上是关于Elasticsearch从零开始搭建ES集群并且集成到Springboot,更好的服务电商类等需要全文索引的项目的主要内容,如果未能解决你的问题,请参考以下文章

(十七)从零开始搭建k8s集群——使用KubeSphere管理平台搭建一个kibana管理平台

Elasticsearch 集群搭建

ElasticSearch集群的搭建

Es学习第十课,ElasticSearch集群搭建

ElasticSearch-5.3.1集群环境搭建,安装ElasticSearch-head插件,安装错误解决

从零开始搭建RabbitMQ集群遇到的问题