ES在Linux上的配置
1.ES是基于Lucene进行开发的,Lucene又是apache基金会的一个项目,也就是说Lucene必须要jdk环境,ES也必须要jdk环境
2.拿到一个新的Linux服务器的时候如何配置
2.1修改hostname
可以非常直观的看到该服务器上所搭建的软件/架构/中间件…
vim /etc/sysconfig/network
修改HOSTNAME=es01
2.2修改hostname和IP的映射
也就是说其他的服务器需要使用ssh访问这一台服务器的时候
es01 192.168.23.167
redis02 192.168.23.168
…
vim /etc/hosts
在末尾写入192.168.23.167 es01
必须要和hostname所配置的es01保持一致
2.3直接关闭防火墙/开启防火墙访问端口号
如果服务器只需要在内网,可以直接关闭防火墙
如果服务器上所部署的项目必须要暴露给外网,不能关闭防火墙,只能开放端口
关闭防火墙:service iptables stop
2.4需要关闭防火墙的开机启动
chkconfig iptables off
2.5重启
reboot
3.配置jdk
参考我的另一篇文章:Linux环境下安装jdk
4.ES的配置
4.1使用xftp工具把ES的压缩包上传到Linux服务器上
4.2解压ES的压缩包
tar -zxvf elasticsearch...
4.3增大Linux上部署软件的内存和硬盘
vim /etc/security/limits.conf
直接跳到最后一行
* soft nproc 655350
* soft nofile 655350
* hard nproc 655350
* hard nofile 655350
4.4最大的线程数
系统默认都有自我保护,不会开启很大的线程,所以需要自己手动开启
vim /etc/sysctl.conf
最后一行添加:vm.max_map_count = 262144
4.5配置用户最大的线程数
vim /etc/security/limits.d/90-nproc.conf
* soft nproc 1024 ---> 4096
root soft nproc unlimited
4.6使其永久生效
sysctl -p
4.7进入到ES的bin目录启动
./elasticsearch
4.8验证是否配置成功
浏览器中输入 ip:9200
看到以下信息说明启动和配置成功:
4.9配置中文分词器(搜狗,IK)
因为ES是外国人开发的,最终的情况下外国人对中文的汉字/词语不是特别了解
This is Java
This Java
is Java
Java
is
This
我爱java
我
爱
java
我爱
爱java
就是为了让搜索变得更加精准
!!!!如果ES6.4.0那么分词器的版本也必须是6.4.0!!!!
4.9.1使用xftp把IK分词器压缩包上传到Linux服务器上
4.9.2 使ES集成IK分词器
4.9.3在ES的plugins目录中创建IK目录
mkdir IK
4.9.4解压IK分词器
所有的IK分词器的压缩包都是zip格式
unzip elasticsearch-analysis-ik-6.4.0.zip
4.9.5启动ES
仍然是在ES的bin目录下执行
./elasticsearch
配置ES所遇到的问题:
1.can not run elasticsearch as root
因为ES有自我保护机制,root用户的权限过大,因为如果使用root,可能容易修改到ES自带的配置
创建esuser用户并设置密码
useradd esuser
passwd esuser
使用root用户对esuser授权(es目录)
chown -R esuser ES安装目录
然后切换euser用户登陆:su esuser
2.CONFIG_SECCOMP not compiled into kernel,CONFIG_SECCOMP and CONFIG_SECCOMP_FILTER are needed
需要修改ES的配置文件,应为最终CONFIG_SECCOMP系统在centos7中默认会被加载,但是在centos6中没有CONFIG_SECCOMP
解决方案:
1. centos6 --> 7
2. 修改ES的配置:在yml中进行配置
cd ES安装目录/config
vim elasticsearch.yml
#修改集群名称(名字可以随便取)
cluster.name: my-cluster(修改)
#如果未单节点无所谓(如果为集群,则每一个节点的node-name不能重复)(名字可以随便取)
node.name: node-1(修改)
#ES的节点信息数据(默认data目录是不存在的,如果ES从来没有启动过,可以进行手动创建,一旦ES启动后,会默认创建)
path.data: ES安装目录/data(修改)
#ES的日志信息目录
path.logs: ES安装目录/logs(修改)
#放开ES的内存锁,让ES直接拥有最大的内存权限
bootstrap.memory_lock: false(修改)
#解决此问题
bootstrap.system_call_filter: false(添加)
#配置当前ES服务器绑定的IP地址(0.0.0.0)
一旦配置的是0.0.0.0代表所以的电脑都可以进行连接(对链接不再造成任何限制)
network.host: Linux服务器的IP(修改)
#识别集群中其他节点的host(如果为单节点只需要配置一个即可)
discovery.zen.ping.unicast.hosts: ["Linux服务器的IP“](修改)
3.使用创建的esuser用户启动ES没有问题,但是当使用root用户启动一次后,再使用esuser用户启动可能会有问题
新创建的esuser用户无法使用root用户所创建出的文件
无论使用什么用户启动,都会创建一个文件elasticsearch.keystore文件,因为是root用户创建,其他用户没有权限访问/修改