当前位置: 首页 > news >正文

Elasticsearch7.7.1集群不能相互发现的问题解决以及Elasticsearch7.7.1安装analysis-ik中文分词插件的应用

一、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在集群创建的时候配置好,后面不能热更改。更改会报错:{Can't 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文件安装
user@u007:/usr/share/elasticsearch/plugins/$ mkdir ik; cd ik
user@u007:/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
user@u007:/usr/share/elasticsearch/plugins/ik$ sudo unzip elasticsearch-analysis-ik-7.7.1.zip
user@u007:/usr/share/elasticsearch/plugins/ik$ sudo rm -f elasticsearch-analysis-ik-7.7.1.zip
#解压完重启ES
user@u007:/usr/share/elasticsearch/plugins/ik$ sudo /etc/init.d/elasticsearch restart
[ ok ] Restarting elasticsearch (via systemctl): elasticsearch.service.
user@u007:/usr/share/elasticsearch/plugins/ik$ cd /usr/share/elasticsearch/bin
#通过elasticsearch-plugin list命令可以查看到已经安装的插件列表
user@u007:/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": "我们去电影院吧"
}'

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 力扣19 删除链表的倒数第N个节点 Java版本
  • 【C++】模拟实现list
  • Why Is Prompt Tuning for Vision-Language Models Robust to Noisy Labels?
  • Android String资源文件中,空格、换行以及特殊字符如何表示
  • 网络爬虫进阶
  • LlamaIndex 的Node节点后处理器模块介绍
  • 二叉树中序遍历非递归+递归C++实现
  • linux之网络命令
  • My_string 运算符重载,My_stack
  • MES系统如何提升制造企业的运营效率和灵活性
  • 深入剖析链表反转:多语言实现与高级语法特性20240924
  • 软件测试面试题(6)——二面(游戏测试)
  • 怎么设置u盘不让别人拷贝?八个方法集锦,一分钟教会你!(最全攻略来了)
  • 计算机前沿技术-人工智能算法-大语言模型-最新论文阅读-2024-09-21
  • 2024年汉字小达人区级自由报名比赛正式开始,大家最关注的问题解答
  • 【css3】浏览器内核及其兼容性
  • 【刷算法】求1+2+3+...+n
  • Date型的使用
  • ES2017异步函数现已正式可用
  • HTML-表单
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • Linux下的乱码问题
  • mysql 5.6 原生Online DDL解析
  • October CMS - 快速入门 9 Images And Galleries
  • quasar-framework cnodejs社区
  • SegmentFault 2015 Top Rank
  • 编写符合Python风格的对象
  • 分布式事物理论与实践
  • 关于使用markdown的方法(引自CSDN教程)
  • 官方新出的 Kotlin 扩展库 KTX,到底帮你干了什么?
  • 基于 Babel 的 npm 包最小化设置
  • 基于Android乐音识别(2)
  • 前端面试之CSS3新特性
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 如何选择开源的机器学习框架?
  • - 语言经验 - 《c++的高性能内存管理库tcmalloc和jemalloc》
  • 自制字幕遮挡器
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • ​经​纬​恒​润​二​面​​三​七​互​娱​一​面​​元​象​二​面​
  • #1014 : Trie树
  • #FPGA(基础知识)
  • (1)STL算法之遍历容器
  • (TOJ2804)Even? Odd?
  • (转)树状数组
  • (转)用.Net的File控件上传文件的解决方案
  • (轉貼) VS2005 快捷键 (初級) (.NET) (Visual Studio)
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .NET CORE 2.0发布后没有 VIEWS视图页面文件
  • .NET Core 成都线下面基会拉开序幕
  • .net 获取某一天 在当月是 第几周 函数
  • .NET 简介:跨平台、开源、高性能的开发平台
  • .NET4.0并行计算技术基础(1)
  • ?
  • @property @synthesize @dynamic 及相关属性作用探究