安装Elasticsearch

2022-03-07 13:39:35 浏览数 (1)

4. 安装Elasticsearch

4.1 安装Elasticsearch

4.1.1 创建普通用户

ES不能使用root用户来启动,必须使用普通用户来安装启动。这里我们创建一个普通用户以及定义一些常规目录用于存放我们的数据文件以及安装包等。

创建一个es专门的用户(必须) 使用root用户在服务器执行以下命令

代码语言:javascript复制
先创建组, 再创建用户:
1)创建 elasticsearch 用户组
[root@localhost ~]# groupadd elasticsearch
2)创建用户 tlbaiqi 并设置密码
[root@localhost ~]# useradd tlbaiqi
[root@localhost ~]# passwd tlbaiqi
3)# 创建es文件夹,
并修改owner为baiqi用户
mkdir -p /usr/local/es
4)用户es 添加到 elasticsearch 用户组
[root@localhost ~]# usermod -G elasticsearch tlbaiqi
[root@localhost ~]# chown -R tlbaiqi /usr/local/es/elasticsearch-7.6.1
5)设置sudo权限
#为了让普通用户有更大的操作权限,我们一般都会给普通用户设置sudo权限,方便普通用户的操作
#三台机器使用root用户执行visudo命令然后为es用户添加权限
[root@localhost ~]# visudo
#在root ALL=(ALL) ALL 一行下面
#添加tlbaiqi用户 如下:
tlbaiqi ALL=(ALL) ALL
#添加成功保存后切换到tlbaiqi用户操作
[root@localhost ~]# su tlbaiqi
[tlbaiqi@localhost root]$
4.1.2 上传压缩包并解压

将es的安装包下载并上传到服务器的/user/local/es路径下,然后进行解压 使用tlbaiqi用户来执行以下操作,将es安装包上传到指定服务器,并使用es用户执行以下命令解压。

代码语言:javascript复制
# 解压Elasticsearch
su tlbaiqi
cd /user/local/
tar -zvxf elasticsearch-7.6.1-linux-x86_64.tar.gz -C /usr/local/es/
4.1.3 修改配置文件
4.1.3.1 修改elasticsearch.yml

进入服务器使用baiqi用户来修改配置文件

代码语言:javascript复制
cd /usr/local/es/elasticsearch-7.6.1/config
mkdir -p /usr/local/es/elasticsearch-7.6.1/log
mkdir -p /usr/local/es/elasticsearch-7.6.1/data
rm -rf elasticsearch.yml
vim elasticsearch.yml
cluster.name: baiqi-es
node.name: node1
path.data: /usr/local/es/elasticsearch-7.6.1/data
path.logs: /usr/local/es/elasticsearch-7.6.1/log
network.host: 0.0.0.0
http.port: 9200
discovery.seed_hosts: ["服务器IP"]
cluster.initial_master_nodes: ["节点名"]
bootstrap.system_call_filter: false
bootstrap.memory_lock: false
http.cors.enabled: true
http.cors.allow-origin: "*"
4.1.3.2 修改jvm.option

修改jvm.option配置文件,调整jvm堆内存大小。 node1.baiqi.cn使用baiqi用户执行以下命令调整jvm堆内存大小,每个人根据自己服务器的内存大小来进行调整。

代码语言:javascript复制
cd /usr/local/es/elasticsearch-7.6.1/config
vim jvm.options
-Xms2g
-Xmx2g
4.2 修改系统配置,解决启动时候的问题

由于现在使用普通用户来安装es服务,且es服务对服务器的资源要求比较多,包括内存大小,线程数等。所以我们需要给普通用户解开资源的束缚。

4.2.1 普通用户打开文件的最大数限制

问题错误信息描述: max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]

ES因为需要大量的创建索引文件,需要大量的打开系统的文件,所以我们需要解除linux系统当中打开文件最大数目的限制,不然ES启动就会抛错,三台机器使用baiqi用户执行以下命令解除打开文件数据的限制。

代码语言:javascript复制
sudo vi /etc/security/limits.conf

添加如下内容: 注意*不要去掉了

代码语言:javascript复制
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
4.2.2 此文件修改后需要重新登录用户,才会生效

普通用户启动线程数限制 问题错误信息描述 max number of threads [1024] for user [es] likely too low, increase to at least [4096]

修改普通用户可以创建的最大线程数 max number of threads [1024] for user [es] likely too low, increase to at least [4096]

原因:无法创建本地线程问题,用户最大可创建线程数太小

解决方案:修改90-nproc.conf 配置文件。 三台机器使用baiqi用户执行以下命令修改配置文件

代码语言:javascript复制
Centos6
sudo vi /etc/security/limits.d/90-nproc.conf
Centos7
sudo vi /etc/security/limits.d/20-nproc.conf

找到如下内容:

代码语言:javascript复制
* soft nproc 1024#修改为
* soft nproc 4096
4.2.3 普通用户调大虚拟内存

错误信息描述: max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]

原因:最大虚拟内存太小,解决方案:调大系统的虚拟内存,每次启动机器都手动执行下。三台机器执行以下命令

编辑 /etc/sysctl.conf,追加以下内容:vm.max_map_count=262144 保存后,执行:sysctl -p

备注:以上三个问题解决完成之后,重新连接secureCRT或者重新连接xshell生效

4.3 启动ES服务

三台机器使用baiqi用户执行以下命令启动es服务

代码语言:javascript复制
nohup /usr/local/es/elasticsearch-7.6.1/bin/elasticsearch 2>&1 &

后台启动ES 进入bin目录 ./elasticsearch -d 启动成功之后jsp即可看到es的服务进程,并且访问页面

代码语言:javascript复制
http://ip:9200/?pretty

能够看到es启动之后的一些信息 注意:如果哪一台机器服务启动失败,那么就到哪一台机器的

代码语言:javascript复制
/usr/local/es/elasticsearch-7.6.1/log

这个路径下面去查看错误日志

关闭Linux防火墙

代码语言:javascript复制
永久性生效,重启后不会复原
开启: chkconfig iptables on
关闭: chkconfig iptables off
即时生效,重启后复原
开启: service iptables start
关闭: service iptables stop

注意:启动ES的时候出现 Permission denied。原因:当前的用户没有对XX文件或目录的操作权限。

5 客户端Kibana安装

5.1客户端可以分为图形界面客户端,和代码客户端.

5.2 ES主流客户端Kibana,开放9200端口与图形界面客户端交互

1)下载Kibana放之/usr/local/es目录中 2)解压文件:tar -zxvf kibana-X.X.X-linux-x86_64.tar.gz 3)进入/usr/local/es/kibana-X.X.X-linux-x86_64/config目录 4)使用vi编辑器:vi kibana.yml

代码语言:javascript复制
server.port: 5601
server.host: "服务器IP"
elasticsearch.hosts: ["http://IP:9200"]  #这里是elasticsearch的访问地址

5)启动Kibana

代码语言:javascript复制
/usr/local/es/kibana-7.6.1-linux-x86_64/bin/kibana

后台启动kibana

代码语言:javascript复制
nohup  ./kibana &

6)访问Kibana

代码语言:javascript复制
http://ip:5601/app/kibana

6 安装IK分词器

我们后续也需要使用Elasticsearch来进行中文分词,所以需要单独给Elasticsearch安装IK分词器插件。以下为具体安装步骤:

6.1 下载Elasticsearch IK分词器

https://github.com/medcl/elasticsearch-analysis-ik/releases

6.2 切换到baiqi用户,并在es的安装目录下/plugins创建ik

代码语言:javascript复制
mkdir -p /usr/local/es/elasticsearch-7.6.1/plugins/ik

6.3 将下载的ik分词器上传并解压到该目录

代码语言:javascript复制
cd /usr/local/es/elasticsearch-7.6.1/plugins/ik
unzip  elasticsearch-analysis-ik-7.6.1.zip 

6.4 重启Elasticsearch

6.5 测试分词效果

代码语言:javascript复制
POST _analyze
{
"analyzer":"standard",
"text":"我爱你中国"
}
代码语言:javascript复制
POST _analyze
{
"analyzer": "ik_smart",
"text": "中华人民共和国"
 }
 #ik_smart:会做最粗粒度的拆分
代码语言:javascript复制
POST _analyze
{
"analyzer":"ik_max_word",
"text":"我爱你中国"
}
#ik_max_word:会将文本做最细粒度的拆分

0 人点赞