搭建es集群,用一台机器不同端口来实现
1.下载elasticsearch-7.6.1-linux-x86_64.tar.gz
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.1-linux-x86_64.tar.gz
2. 解压 tar -zxvf elasticsearch-7.6.1-linux-x86_64.tar.gz
3. 将解压后的es拷贝出三份
cp -r elasticsearch-7.6.1/ elasticsearch-7.6.1_c1 cp -r elasticsearch-7.6.1/ elasticsearch-7.6.1_c2 cp -r elasticsearch-7.6.1/ elasticsearch-7.6.1_c3
4.编辑配置文件
先进入elasticsearch-7.6.1_c1的config目录,开始编辑elasticsearch.yml
vim elasticsearch.yml
cluster.name: my-es
node.name: node-1
network.host: 192.168.220.101
#默认是9200,如果搭建的集群用的是多台不同的服务器,则不用修改
http.port: 9201
#默认是9300,如果搭建的集群用的是多台不同的服务器,则不用修改
transport.tcp.port: 9301
#es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点,也就是说把所有的节点都写上
discovery.seed_hosts: ["192.168.220.101:9301", "192.168.220.101:9302","192.168.220.101:9303"]
#当你在搭建集群的时候,选出合格的节点集群,有些人说的太官方了, #其实就是,让你选择比较好的几个节点,在你节点启动时,在这些节点中选一个做领导者, #如果你不设置呢,elasticsearch就会自己选举,这里我们把三个节点都写上
cluster.initial_master_nodes: ["node-1", "node-2","node-3"]
#简单点说在集群启动后,至少复活多少个节点以上,那么这个服务才可以被使用,否则不可以被使用,
gateway.recover_after_nodes: 2
#是不是有资格竞选主节点
node.master: true
#是否存储数据
node.data: true
#跨域访问设置
http.cors.enabled: true
http.cors.allow-origin: "*"
编辑elasticsearch-7.6.1_c2配置文件elasticsearch.yml
cluster.name: my-es
node.name: node-2
network.host: 192.168.220.101
http.port: 9202
transport.tcp.port: 9302
discovery.seed_hosts: ["192.168.220.101:9301", "192.168.220.101:9302","192.168.220.101:9303"]
cluster.initial_master_nodes: ["node-1", "node-2","node-3"]
gateway.recover_after_nodes: 2
node.master: true
node.data: true
http.cors.enabled: true
http.cors.allow-origin: "*"
编辑elasticsearch-7.6.1_c3配置文件elasticsearch.yml
cluster.name: my-es
node.name: node-3
network.host: 192.168.220.101
http.port: 9203
transport.tcp.port: 9303
discovery.seed_hosts: ["192.168.220.101:9301", "192.168.220.101:9302","192.168.220.101:9303"]
cluster.initial_master_nodes: ["node-1", "node-2","node-3"]
gateway.recover_after_nodes: 2
node.master: true
node.data: true
http.cors.enabled: true
http.cors.allow-origin: "*"
在上面的配置文件中,data和logs用的都是默认配置路径,path.data: /path/to/data和path.logs: /path/to/logs,指的是es目录下定义好的data和log目录。
如果我们自己创建了数据和日志目录,则可以修改这两处配置。
5.创建elasticsearch用户
elasticsearch不允许使用root账号启动,需要创建一个账户,比如我新建一个账户zxp,然后通过命令,将elasticsearch目录授权给zxp和他所在组
chown -R zxp:zxp elasticsearch-7.6.1_c1
chown -R zxp:zxp elasticsearch-7.6.1_c2
chown -R zxp:zxp elasticsearch-7.6.1_c3
6.启动
首先切换到新建的es账号下:su zxp
然后到es的bin目录下,执行启动命令[zxp@localhost local]$ ./elasticsearch-7.6.1_c1/bin/elasticsearch,可能会报以下错误:
问题一:ERROR: bootstrap checks failed max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536] max number of threads [1024] for user [lishang] likely too low, increase to at least [2048] 解决:切换到root用户,编辑limits.conf 添加如下内容 vi /etc/security/limits.conf 添加如下内容:
* soft nproc 65536
* hard nproc 65536
* soft nofile 65536
* hard nofile 65536
问题二:max number of threads [1024] for user [lish] likely too low, increase to at least [2048] 解决:切换到root用户,进入limits.d目录下修改配置文件。 vi /etc/security/limits.d/90-nproc.conf 修改如下内容:
* soft nproc 1024
#修改为
* soft nproc 2048
问题三:max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144] 解决:切换到root用户修改配置sysctl.conf vi /etc/sysctl.conf 添加下面配置:
vm.max_map_count=655360
最后并执行命令:
sysctl -p
然后,重新启动elasticsearch,即可启动成功:[zxp@localhost local]$ ./elasticsearch-7.6.1_c1/bin/elasticsearch
7.通过访问地址查看集群状态
http://192.168.220.101:9201/_cat/health?v
8.通过es-Head查看集群信息 http://192.168.220.102:9100/
部署elasticsearch-analysis-ik分词器
下载ik分词器,下载网址https://github.com/medcl/elasticsearch-analysis-ik/releases
1.找到对应es版本的ik,然后下载
wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.6.1/elasticsearch-analysis-ik-7.6.1.zip
2. 在es的plugins目录下先建个目录ik
mkdir elasticsearch-7.6.1_c1/plugins/ik
3. 解压下载的ik压缩包到上面新建的ik目录中
unzip elasticsearch-analysis-ik-7.6.1.zip -d elasticsearch-7.6.1_c1/plugins/ik
4.自定义分词词库
首先,进入plugins-->ik-->config目录,新建一个xxx.dic文件,比如my.dic的文件,并在这一个文件中写入词汇
修改config目录下IKAnalyzer.cfg.xml文件的内容。如下图所示,在<entry key="ext_dic>标签中写入自定义词库的路径,如<entry key="ext_dict">my.dic</entry>
自定义分词示例如下:
[root@localhost config]# pwd /usr/local/elasticsearch-7.6.1_c1/plugins/ik/config [root@localhost config]# cat my.dic 河南邓州 [root@localhost config]# cat IKAnalyzer.cfg.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd"> <properties> <comment>IK Analyzer 扩展配置</comment> <!--用户可以在这里配置自己的扩展字典 --> <entry key="ext_dict">my.dic</entry> <!--用户可以在这里配置自己的扩展停止词字典--> <entry key="ext_stopwords"></entry> <!--用户可以在这里配置远程扩展字典 --> <!-- <entry key="remote_ext_dict">words_location</entry> --> <!--用户可以在这里配置远程扩展停止词字典--> <!-- <entry key="remote_ext_stopwords">words_location</entry> --> </properties>
5.重启es
6.测试ik分词器及自定义词库
ik分词策略支持ik_max_word 和 ik_smart ,调用analyze接口测试, 如:
GET _analyze
{
"analyzer":"ik_max_word",
"text":"中国河南邓州解放军"
}
返回结果如下:
{
"tokens" : [
{
"token" : "中国",
"start_offset" : 0,
"end_offset" : 2,
"type" : "CN_WORD",
"position" : 0
},
{
"token" : "河南邓州",
"start_offset" : 2,
"end_offset" : 6,
"type" : "CN_WORD",
"position" : 1
},
{
"token" : "河南",
"start_offset" : 2,
"end_offset" : 4,
"type" : "CN_WORD",
"position" : 2
},
{
"token" : "邓州",
"start_offset" : 4,
"end_offset" : 6,
"type" : "CN_WORD",
"position" : 3
},
{
"token" : "解放军",
"start_offset" : 6,
"end_offset" : 9,
"type" : "CN_WORD",
"position" : 4
},
{
"token" : "解放",
"start_offset" : 6,
"end_offset" : 8,
"type" : "CN_WORD",
"position" : 5
},
{
"token" : "军",
"start_offset" : 8,
"end_offset" : 9,
"type" : "CN_CHAR",
"position" : 6
}
]
}
docker部署es集群,参考文章 https://blog.csdn.net/weixin_36550048/article/details/105895031