一.Elasticsearch 安装

安装前,查看环境jdk 和elk 相关版本的对应关系:
ELK版本和 jdk版本对应:版本关系对比链接 0. 创建普通用户
ES不能使用root用户来启动,必须使用普通用户来安装启动。这里我们创建一个普通用户以及定义一些常规目录用于存放我们的数据文件以及安装包等。
创建一个es专门的用户(必须).使用root用户在服务器执行以下命令

先创建组, 再创建用户:
1)创建 elasticsearch 用户组   hc-es-group
[root@localhost ~]# groupadd hc-es-group
        
2)创建用户 hc-es 并设置密码
[root@localhost ~]# useradd hc-es
[root@localhost ~]# passwd hc-es
设置两次密码 hc-es-200217miss

3)# 创建es文件夹,
并修改owner为hc用户
mkdir -p /usr/local/es

4)用户es 添加到 elasticsearch 用户组
[root@localhost ~]# usermod -G hc-es-group hc-es
cd /usr/local/es
解压上传的es包
tar -zvxf  elasticsearch-7.10.2-linux-x86_64.tar.gz 
#-R 递归 给hc-es用户授权对应的目录权限
[root@localhost ~]# chown -R hc-es /usr/local/es/elasticsearch-7.10.2

5)设置sudo权限
#为了让普通用户有更大的操作权限,我们一般都会给普通用户设置sudo权限,方便普通用户的操作
#三台机器使用root用户执行visudo命令然后为es用户添加权限
[root@localhost ~]# visudo

#在root ALL=(ALL) ALL 一行下面
#添加hc-es用户 如下:
hc-es ALL=(ALL) ALL
             
#添加成功保存后切换到tlbaiqi用户操作

[root@localhost ~]# su hc-es
[hc-es@localhost root]$

1.下载Elasticsearch 对应的安装包【这一步可以在上面创建用户组和用户后进行】

https://www.elastic.co/cn/downloads/past-releases#elasticsearch

2.下载后,上传到linux服务器对应的目录位置 ,解压

如我本地放在 :/user/local/es

cd /user/local/es
#解压
tar -zxvf elasticsearch-7.10.2-linux-x86_64.tar.gz

注:es和jdk是一个强依赖的关系问题 vim bin/elasticsearch 可以修改

3.修改配置文件

3.1 修改elasticsearch.yml
进入服务器使用hc-es用户来修改配置文件

#logs 可能已经存在了
mkdir -p /usr/local/es/elasticsearch-7.10.2/logs 
mkdir -p /usr/local/es/elasticsearch-7.10.2/data
cd /usr/local/es/elasticsearch-7.10.2/config

vim elasticsearch.yml

修改后

cluster.name: hc-es-cluster

node.name: hc-node-1
#
# Add custom attributes to the node:
#
#node.attr.rack: r1
#
# ----------------------------------- Paths ------------------------------------
#
# Path to directory where to store the data (separate multiple locations by comma):
#
path.data: /usr/local/es/elasticsearch-7.10.2/data
#
# Path to log files:
#
path.logs: /usr/local/es/elasticsearch-7.10.2/logs
#
# ----------------------------------- Memory -----------------------------------
#
# Lock the memory on startup:
#
bootstrap.memory_lock: false
#
# Make sure that the heap size is set to about half the memory available
# on the system and that the owner of the process is allowed to use this
# limit.
#
# Elasticsearch performs poorly when the system is swapping the memory.
#
# ---------------------------------- Network -----------------------------------
#
# Set the bind address to a specific IP (IPv4 or IPv6):
#
network.host: 0.0.0.0
#
# Set a custom port for HTTP:
#
http.port: 9200
#
# For more information, consult the network module documentation.
#
# --------------------------------- Discovery ----------------------------------
#
# Pass an initial list of hosts to perform discovery when this node is started:
# The default list of hosts is ["127.0.0.1", "[::1]"]
#
discovery.seed_hosts: ["安装服务器对应的ip"]
#
# Bootstrap the cluster using an initial set of master-eligible nodes:
#
cluster.initial_master_nodes: ["hc-node-1"]
#
# For more information, consult the discovery and cluster formation module documentation.
#
# ---------------------------------- Gateway -----------------------------------
#
# Block initial recovery after a full cluster restart until N nodes are started:
#
#gateway.recover_after_nodes: 3
#
# For more information, consult the gateway module documentation.
#
# ---------------------------------- Various -----------------------------------
#
# Require explicit names when deleting indices:
#
#action.destructive_requires_name: true
bootstrap.system_call_filter: false
http.cors.enabled: true
http.cors.allow-origin: "*"

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

cd /usr/local/es/elasticsearch-7.10.2/config
vim jvm.options
-Xms1g
-Xmx1g

常见安装问题:
修改系统配置,解决启动时候的问题
由于现在使用普通用户来安装es服务,且es服务对服务器的资源要求比较多,包括内存大小,线程数等。所以我们需要给普通用户解开资源的束缚

Q1 普通用户打开文件的最大数限制
问题错误信息描述:
max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]
ES因为需要大量的创建索引文件,需要大量的打开系统的文件,所以我们需要解除linux系统当中打开文件最大数目的限制,不然ES启动就会抛错
三台机器使用hc用户执行以下命令解除打开文件数据的限制
sudo vi /etc/security/limits.conf
添加如下内容: 注意*不要去掉了

* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096

此文件修改后需要重新登录用户,才会生效
Q2 普通用户启动线程数限制
问题错误信息描述
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用户执行以下命令修改配置文件
Centos6
sudo vi /etc/security/limits.d/90-nproc.conf
Centos7
sudo vi /etc/security/limits.d/20-nproc.conf

找到如下内容:

* soft nproc 1024#修改为
* soft nproc 4096

Q3 普通用户调大虚拟内存
错误信息描述:
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启动ES服务

使用hc用户执行以下命令启动es服务
后台启动ES 进入bin目录

./elasticsearch  -d

切记:防火墙和安全组开放9200端口。

#查看防火墙是否开启
systemctl status firewalld
#查看所有永久开放的端口(默认为空)
firewall-cmd --list-ports --permanent
# 添加临时开放端口(例如:比如我修改ssh远程连接端口是223,则需要开放这个端口)
firewall-cmd --add-port=223/tcp
# 添加永久开放的端口(例如:223端口)
firewall-cmd --add-port=223/tcp --permanent
#关闭临时端口
firewall-cmd --remove-port=80/tcp
#关闭永久端口
firewll-cmd --remove-port=80/tcp --permanent
#配置结束后需要输入重载命令并重启防火墙以生效配置
firewall-cmd --reload
systemctl restart firewalld

启动成功之后jsp即可看到es的服务进程,并且访问页面
http://服务器ip:9200 能够看到es启动之后的一些信息
windows下给es增加普通用户_elasticsearch

注意:如果启动失败
/usr/local/es/elasticsearch-7.10.2/log
这个路径下面去查看错误日志

重启:

1.查找ES进程
ps -ef | grep elastic
2.杀掉ES进程
kill -9 进程号
3.重启ES
sh elasticsearch -d
关闭Linux防火墙
永久性生效,重启后不会复原
开启: chkconfig iptables on
关闭: chkconfig iptables off
即时生效,重启后复原
开启: service iptables start
关闭: service iptables stop

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

5.额外篇:安装ik分词器

https://github.com/medcl/elasticsearch-analysis-ik/releases 下载分词器
注意和es的版本对应关系

进入es的插件目录中

cd /usr/local/es/elasticsearch-7.10.2/plugins
mkdir ik

在ik目录下上传下载的elasticsearch-analysis-ik-7.10.2.zip

unzip elasticsearch-analysis-ik-7.10.2.zip

然后重启es即可
1.查找ES进程
ps -ef | grep elastic

2.杀掉ES进程
kill -9 (进程号)

3.重启ES
sh elasticsearch -d