重庆免费网站建站模板,嘉定南翔网站建设,游戏app定制开发,做网站很挣多少钱一、Elasticsearch7.7.1集群不能相互发现的问题解决 在使用elasticsearch7.7.1搭建集群#xff0c;使用了3台服务器作为节点#xff0c;但在搭建的过程中发现每台服务器的elasticsearch服务都正常#xff0c;但是不能相互发现#xff0c;期间进行了一些配置的修改偶尔出现了…一、Elasticsearch7.7.1集群不能相互发现的问题解决 在使用elasticsearch7.7.1搭建集群使用了3台服务器作为节点但在搭建的过程中发现每台服务器的elasticsearch服务都正常但是不能相互发现期间进行了一些配置的修改偶尔出现了相互发现但没过多久又断了联系。蛋疼了一阵子。今天全力排查这方面的问题目前看集群已经稳定。主要原因还是elasticsearch7.*版本有些不一样网上的资料各个版本都有但都比较老好多配置项在7版本中已经废弃了而到网上一找到处都充斥着这些老版本的使用教程新的太少。下面是我使用elasticsearch7.7.1搭建集群最后使用的配置。 elasticsearch7.7主要的配置项discovery.seed_hosts和cluster.initial_master_nodes这是7.中重要的发现和集群初始化设置项。 discovery.seed_hosts: Elasticsearch将绑定到可用的回送地址并将扫描本地端口9300至9305以尝试连接到在同一服务器上运行的其他节点这里ES提供了自动群集检查而无需进行任何配置。如果要与其他主机上的节点组成集群则必须设置discovery.seed_hosts提供集群中其他主机的列表每个值都采用 host:port 或者 host 形式。 cluster.initial_master_nodes: 首次启动全新的Elasticsearch集群时会出现集群选举情况该步骤确定了在第一次选举中符合主机资格的节点的集合。当你开启新的集群是 生产模式,你必须明确列出首次选举中符合主机资格的节点使用 cluster.initial_master_nodes参数设置该列表。重新启动集群或者有新节点加入集群时不应使用此设置。 在elasticsearch7.*中我使用的elasticsearch.yml配置如下
cluster.name: test-es
node.name: node01
path.data: /opt/elasticsearch/data
path.logs: /opt/elasticsearch/log
network.host: 192.21.17.15
http.port: 9200
discovery.seed_hosts: [192.21.17.15, 192.41.19.66, 192.88.117.14]
#只在一台服务器上配置了以下这行重新启动集群或者有新节点加入集群时不应使用此设置。
cluster.initial_master_nodes: [192.21.17.15, 192.41.19.66, 192.88.117.14]http.cors.enabled: true
http.cors.allow-origin: * 默认安装的es日志目录在/var/lib/elasticsearch下面只能root权限查看建议修改一下path.logs或者改一下原path的权限日志目录中会有集群名称.log文件在这里查看各种日志非常方便排查问题。比如cluster.initial_master_nodes会配置报错以及主服务器挂了之后会进行主服务器的切换等都有相应的日志。 #配置的时候如果没有配置cluster.initial_master_nodes会报错 master not discovered yet, this node has not previously joined a bootstrapped [2020-06-17T][WARN ][o.e.c.c.ClusterFormationFailureHelper] [node01] master not discovered yet, this node has not previously joined a bootstrapped (v7) cluster, and [cluster.initial_master_nodes] is empty on this node: have discovered [{node01}{n7JrlaC_TMGwNBcALLIFnA}{lCwPWtwDQWeUNiGIrScq5A} #当在集群运行过程中其中一台主服务器挂了之后会进行主服务器的切换 [2020-06-17T][INFO ][o.e.c.s.ClusterApplierService] [node02] master node changed {previous [], current [{node03}{A_hBOpISQ12L3tu5DCWjUA}{e3H0NrtBS3WE1HUwOW3P1g 关于集群的配置number_of_replicas和number_of_shards。number_of_replicas可以热配置number_of_shards在集群创建的时候配置好后面不能热更改。更改会报错{Cant update non dynamic settings [[index.number_of_shards]] for open indices}搭建好的截图如下 二、Elasticsearch7.7.1安装analysis-ik中文分词插件的应用 analysis-ik中文分词插件的GITHUB地址 GitHub - infinilabs/analysis-ik: The IK Analysis plugin integrates Lucene IK analyzer into Elasticsearch and OpenSearch, support customized dictionary. 在页面中列出了IK version与ES version的相对应版本即你所需要下载的IK版本一定要与ES版本相适应否则就不能用了。比如给Elasticsearch7.7.1安装IK7.4.0版本的话在启动ES时就会报错如下
org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92) ~[elasticsearch-7.7.1.jar:7.7.1] Caused by: java.lang.IllegalArgumentException: Plugin [analysis-ik] was built for Elasticsearch version 7.4.0 but version 7.7.1 is running
以下为安装过程记录
#第1种方式自己下载zip文件安装
useru007:/usr/share/elasticsearch/plugins/$ mkdir ik; cd ik
useru007:/usr/share/elasticsearch/plugins/ik$ sudo wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.7.1/elasticsearch-analysis-ik-7.7.1.zip
useru007:/usr/share/elasticsearch/plugins/ik$ sudo unzip elasticsearch-analysis-ik-7.7.1.zip
useru007:/usr/share/elasticsearch/plugins/ik$ sudo rm -f elasticsearch-analysis-ik-7.7.1.zip
#解压完重启ES
useru007:/usr/share/elasticsearch/plugins/ik$ sudo /etc/init.d/elasticsearch restart
[ ok ] Restarting elasticsearch (via systemctl): elasticsearch.service.
useru007:/usr/share/elasticsearch/plugins/ik$ cd /usr/share/elasticsearch/bin
#通过elasticsearch-plugin list命令可以查看到已经安装的插件列表
useru007:/usr/share/elasticsearch/bin$ sudo ./elasticsearch-plugin list
ik#第2种方式直接使用elasticsearch-plugin工具安装
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.4.0/elasticsearch-analysis-ik-7.7.1.zip IK分词安装好了之后我们来试一下吧IK分词器有两种分词设置ik_max_word和ik_smart有什么区别呢? ik_smart: 会做最粗粒度的拆分比如我们去电影院吧里面的电影院就直接是电影院。 ik_max_word:会将文本做最细粒度的拆分比如我们去电影院吧里面的电影院会拆分成电影院和电影。 可以使用以下进行测试
curl -XGET http://127.0.0.1:9200/online/_analyze?pretty -H Content-Type: application/json -d
{analyzer: ik_smart,text: 我们去电影院吧
}curl -XGET http://127.0.0.1:9200/online/_analyze?pretty -H Content-Type: application/json -d
{analyzer: ik_max_word,text: 我们去电影院吧
}