ElasticSearch 安装

下载地址

历史版本下载地址

单机版安装
安装环境
操作系统 CentOS 7.7 64位
ElasticSearch 6.8.6
Kinbana 6.8.6
JDK 1.8.0_162
创建账号

由于ElasticSearch默认不支持root账号权限启动,所以先创建一个账号

创建一个ElasticSearch运行的组yangqi

[root@xiaoer ~]# groupadd yangqi

yangqi组中创建用户:

[root@xiaoer ~]# useradd yangqi -g yangqi

设置yangqi用户密码:

[root@xiaoer ~]# passwd yangqi

给解压缩的包授予权限:

[root@xiaoer ~]# chown -R yangqi:yangqi /opt/apps/elasticsearch-6.8.6
修改配置文件

修改elasticsearch-6.8.6目录下的config目录下,修改elasticsearch.yml文件内容,修改里面的配置如下:

# 集群的名称
cluster.name: Yankee
# 当前节点名称
node.name: elastic-1
# 索引数据的存储路径
path.data: /opt/apps/elasticsearch-6.8.6/data
# 日志文件的存储路径
path.logs: /opt/apps/elasticsearch-6.8.6/data
# 当前节点所绑定的地址,绑定为0.0.0.0是允许所有访问
network.host: 0.0.0.0
# 对外提供服务的端口号
http.port: 9200

如果有需要,可以修改jvm.options文件的相关设置:

# JVM最小和最大堆内存
-Xms1g
-Xmx1g
启动测试

直接执行./bin/elasticsearch,启动出错:

[yangqi@xiaoer elasticsearch-6.8.6]$ ./bin/elasticsearch

解决方法

[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]

编辑/etc/security/limits.conf,追加以下内容(需要注意的是修改完之后需要重新登录):

* soft nofile 65536
* hard nofile 65536

[2]:max virtual memory areas vm.max_map_count [6530] is too low, increase to at least [262144]

编辑/etc/sysctl.conf文件,追加以下内容(需要注意的是修改完成后执行sysctl -p使修改生效):

vm.max_map_count=262144

[3]: the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured

修改config/elasticsearch.yml文件,修改以下内容:

cluster.initial_master_nodes: ["elastic-1"]

重新启动,没有报错,访问ip:9200,可以看到集群的节点信息:

安装Kibana

Kibana解压后,修改目录名称为kibana-6.8.6,之后修改kibana.yml文件:

[yangqi@xiaoer kibana-6.8.6]$ vi ./confi1g/kibana.yml

修改以下内容:

# 设置服务器端口
server.port: 5601

# 设置服务器访问 ip
server.host: "0.0.0.0"

# 设置访问url
elasticsearch.hosts: ["http://0.0.0.0:9200"]

# 设置服务器用户名和密码
elasticsearch.username: "xiaoer"
elasticsearch.password: "yangqi"

# 设置界面语言
i18n.locale: "zh-CN"

通过bin/kibana启动:

# 首先将elasticsearch挂到后台启动
[yangqi@xiaoer elasticsearch-6.8.6]$ nohup bin/elasticsearch &
# 将kibana挂到后台启动
[yangqi@xiaoer kibana-6.8.6]$ nohup bin/kibana &

启动成功后访问ip:5601会看到如下界面:

集群版安装
安装环境
操作系统 CentOS 7.7 64位机器三台[xiaoer, yangqi1, yangqi2]
ElasticSearch 6.8.6
Kinbana 6.8.6
JDK 1.8.0_162
修改配置文件
# 集群的名称(必须一样)
cluster.name: Yankee  
# 当前节点名称,其余两个节点分别为 elastic-2 和 elastic-3 
node.name: elastic-1  
# 指定该节点是否有资格被选举成为 master 节点,默认是 true,es 是默认集群中的第一台机器为 master,如果这台机挂了就会重新选举 master 
node.master: true  
# 允许该节点存储数据(默认开启) 
node.data: true  
# 索引数据的存储路径 
path.data: /opt/apps/elasticsearch-6.8.6/data
# 日志文件的存储路径 
path.logs: /opt/apps/elasticsearch-6.8.6/logs
# 设置为true来锁住内存。因为内存交换到磁盘对服务器性能来说是致命的,当 jvm 开始 swapping 时 es 的效率会降低,所以要保证它不 swap 
bootstrap.memory_lock: true  
# 绑定的ip地址 
network.host: 0.0.0.0  
# 设置对外服务的http端口,默认为 9200 
http.port: 9200  
# 设置节点间交互的tcp端口,默认是 9300 
transport.tcp.port: 9300  
# Elasticsearch 将绑定到可用的环回地址,并将扫描端口 9300 到 9305 以尝试连接到运行在同一台服务器上的其他节点。 
# 这提供了自动集群体验,而无需进行任何配置。数组设置或逗号分隔的设置。每个值的形式应该是 host:port 或 host 
#(如果没有设置,port 默认设置会 transport.profiles.default.port 回落到 transport.tcp.port)。 
# 请注意,IPv6 主机必须放在括号内。默认为 127.0.0.1, [::1] 
discovery.zen.ping.unicast.hosts: ["xiaoer", "yangqi1", "yangqi2"]  
# 如果没有这种设置,遭受网络故障的集群就有可能将集群分成两个独立的集群 - 分裂的大脑 - 这将导致数据丢失 
discovery.zen.minimum_master_nodes: 2
启动测试

直接执行./bin/elasticsearch,启动出错:

[yangqi@xiaoer elasticsearch-6.8.6]$ ./bin/elasticsearch
[yangqi@yangqi1 elasticsearch-6.8.6]$ ./bin/elasticsearch
[yangqi@yangqi2 elasticsearch-6.8.6]$ ./bin/elasticsearch

解决方法

[1]: memory locking requested for elasticsearch process but memory is not locked

编辑/etc/security/limits.conf,追加以下内容(需要注意的是修改完之后需要重新登录):

yangqi soft memlock unlimited
yangqi hard memlock unlimited

如果修改完成后运行./bin/elasticsearch后,提示已杀死,一般情况下是由于内存无法分配导致的,可以查看日志信息:

此时可以修改./cofig/jvm.options文件(根据自己的内存大小进行调整):

-Xms512M
-Xmx512M

[2]: max number of threads [3795] for user [yangqi] is too low, increase to at least [4096]

通过ulimit -a查看用户进程数限制,发现最大进程数被限制为3795,编辑/etc/security/limits.conf追加以下内容(需要注意的是修改完之后需要重新登录):

*          soft    nproc     4096
*          hard    nproc     4096

重新启动,没有报错,访问ip:9200/_cluster/health?pretty,可以看到集群的节点信息(green表示集群健康):

ElasticSearch的使用
ElasticSearch安装插件的命令
# 安装插件,可以是本地地址也可以是远程地址
bin/elasticsearch-plugin install [地址]

# 列出所有安装的插件
bin/elasticsearch-plugin list

# 移除已经安装的插件
bin/elasticsearch-plugin remove [插件名称]
Bigdesk安装
下载地址

Bigdesk

下载源码的压缩包即可,下载下来是bigdesk-master.zip,可以在windows解压之后上传到elasticsearch集群的elasticsearch-6.8.6/plugins目录下

安装

进入bigdesk-master/_site目录下,执行以下命令:

[yangqi@xiaoer _site]$ python -m SimpleHTTPServer

bigdesk后台启动:

[yangqi@xiaoer _site]$ nohup python -m SimpleHTTPServer &

可以使用ps -ef | grep bigdesk命令查看后台运行状态:

[yangqi@xiaoer _site]$ ps -ef | grep SimpleHTTPServer
连接elasticsearch

此时可能会出现连接不上的情况,需要关掉bigdesk,然后修改elasticsearch.yml配置文件,添加以下内容:

http.cors.enabled: true
http.cors.allow-origin: "*"

之后关掉elasticsearch,重新启动,可能会看到如下的错误信息:

这是因为不能将bigdesk-master目录放到plugins目录中,可以将bigdesk-master放到elasticsearch-6.8.6的安装目录中:

[yangqi@xiaoer elasticsearch-6.8.6]$ mv ./plugins/bigdesk-master ./

重新启动elasticsearch,访问ip:8000,点击Connect即可

elasticsearch-head安装
下载地址

elasticsearch-head

下载源码的压缩包即可,下载下来是elasticsearch-head-master.zip,可以在windows解压之后上传到elasticsearch集群的elasticsearch-6.8.6目录下

安装

安装nodejs

[yangqi@xiaoer ~]$ sudo yum install epel-release
[yangqi@xiaoer ~]$ sudo yum install nodejs npm

下载elasticsearch-head并上传到ealsticseaarch-6.8.6的目录下,进入elasticsearch-head-master目录中,执行以下命令:

[yangqi@xiaoer elasticsearch-head-master]$ npm install

# 启动
[yangqi@xiaoer elasticsearch-head-master]$ npm run start
连接elasticsearch

之后就可以访问ip:9100,界面如下:

此时可能会出现连接不上的情况,需要关掉bigdesk,然后修改elasticsearch.yml配置文件,添加以下内容:

http.cors.enabled: true
http.cors.allow-origin: "*"

重新启动elasticsearch,访问ip:9100,点击Connect即可

# 后台运行
[yangqi@xiaoer elasticsearch-head-master]$ nohup npm run start &