安装过程
一、建立ElasticSearch应用专用用户
由于ES不允许用root运行,所以需要先创建一个账号给它。
1.创建用户组app
groupadd app
2.创建用户elastic
useradd -g app elastic
3.设置密码
passwd elastic
4.创建安装目录
mkdir /app/elastic
chown -R elastic:app /app/elastic
chmod 755 /app/elastic
建立用户并授权目录后使用新用户继续操作。
二、下载解压到适当的目录
选择版本时需要考虑elasticsearch-analysis-ik匹配的版本,请参考 https://github.com/medcl/elasticsearch-analysis-ik/issues#versions中的版本对应关系
最新版的elasticsearch在 https://www.elastic.co/downloads/elasticsearch 下载,过去的版本请在 https://www.elastic.co/downloads/past-releases 查找
su elastic
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.2.tar.gz -o /app/elastic/elasticsearch-5.5.2.tar.gz
把下载后的文件解压在/app/elastic目录
tar xvfz elasticsearch-5.5.2.tar.gz
三、修改配置文件
vim ./elasticsearch-5.5.2/config/elasticsearch.yml
1.修改以下cluster.name: 自定义群名称,同一集群内必须设置相同的名称
node.name: 自定义
节点名称,同一集群内设置不network.host: 本机IPost地址,可以为0.0.0.0,一般直接设置为本机IP
http.port: 9200
2.默认端口9200
discovery.zen.ping.unicast.hosts: ["“,”“,”“]
集群内扫描的机器IP:port,需要添加集群通讯端口,端口默认为9300, 如 ”127.0.0.1:9300”。本机ip:port也要加上。
四、安装ik分词
1.确认要安装的插件版本是否和ElasticSearch版本匹配 ,请参考elasticsearch-analysis-ik和elasticsearch版本对应关系
2.在线安装方式(问题是通常在国内都很慢,原因你懂的):
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v5.5.1/elasticsearch-analysis-ik-5.5.1.zip
3.或者手动下载 https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v5.5.1/elasticsearch-analysis-ik-5.5.1.zip的包并执行步骤2的命令
./bin/elasticsearch-plugin install elasticsearch-analysis-ik-5.5.1.zip
4.又或者,离线安装方式,手动下载已经构建好的包,后放在./bin/elasticsearch-plgin下
#位于elasticsearch安装目录下
mkdir ./plugin/analysis-ik
#把下载后的elasticsearch-analysis-ik-5.5.1.zip放在/tmp下
unzip /tmp/elasticsearch-analysis-ik-5.5.1.zip
mv /tmp/elasticsearch/* ./plugins/analysis-ik
5.测试步骤:https://github.com/medcl/elasticsearch-analysis-ik#quick-example
五、启动
使用以下命令启动,可添加参数-d 后台启动
/app/elastic/elasticsearch-5.5.2/bin/elasticsearch -d
六、快速部署到其他集群
按部署完成了一个节点(master)后,如果需要快速部署到其他多个集群,可以复制master节点的安装目录到其他节点的相同目录,然后只要修改./elasticsearch-5.5.2/config/elasticsearch.yml中的host和discovery.zen.ping.unicast.hosts即可
本项目的Index和Mapping创建方法
本项目使用的index名称为app,type名称为test
创建名为app的index,创建一个ik_pinyin_analyzer
curl -XPUT http://10.18.100.207:9200/app/ -d'
{
"index" : {
"analysis" : {
"analyzer" : {
"ik_pinyin_analyzer" : {
"type":"custom",
"tokenizer" : "ik_smart",
"filter" : ["my_pinyin","word_delimiter"]
}
},
"filter" : {
"my_pinyin" : {
"type" : "pinyin",
"first_letter" : "none",
"padding_char" : " "
}
}
}
}
}'
在type test下的_all字段创建mapping
curl -XPOST http://10.18.100.207:9200/app/test/_mapping -d'
{
"_all": {
"analyzer": "ik_pinyin_analyzer",
"search_analyzer": "ik_pinyin_analyzer",
"term_vector": "no",
"store": "false"
}
}'
修改index的最大fields数量
curl -XPUT 'http://10.18.100.206:9200/app/_settings' -d'
{
"index.mapping.total_fields.limit": 200000
}'
各类报错解决:
一、root用户启动
报错信息:java.lang.RuntimeException: can not run elasticsearch as root
解决方法:设置一个非root用户,用于管理elastic
二、节点数不足:
1.报错信息:max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
解决方法:
ulimit -Hn 查看硬限制
vim /etc/security/limits.conf
添加以下两行【elastic是用户名】:
elastic soft nofile 65536
elastic hard nofile 65536
重新登录检查是否生效。
2.报错信息:max number of threads [1024] for user [elastic] is too low, increase to at least [2048]
解决方法:
vim /etc/security/limits.d/xx-nproc.conf
【文件名会有所不同,且节点数不一定为1024,大于需求值就不需要改】
修改:
* soft nproc 1024 -> * soft nproc 2048
3.报错信息:max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
解决方法:
vim /etc/sysctl.conf
添加:
vm.max_map_count=655360
检查:
sysctl -p
三、使用公网IP无法访问/无法绑定路由
原因:防火墙未开放端口
解决方法【此处举例为CentOS7】:
添加9200端口开放传输:
firewall-cmd --zone=public --add-port=9200/tcp --permanent
添加9200端口开放集群通讯:
firewall-cmd --zone=public --add-port=9300/tcp --permanent
重启防火墙:
firewall-cmd --reload