数据库-Elasticsearch进阶学习笔记(集群、故障、扩容、简繁体、拼音等)

本文涉及的产品
Elasticsearch Serverless通用抵扣包,测试体验金 200元
简介: 数据库-Elasticsearch进阶学习笔记(集群、故障、扩容、简繁体、拼音等)

上篇文章主要分享了ES的高级搜索、核心概念,本篇对集群和分词器的使用做补充。

集群

集群配置

把之前的复制一份,删掉data和logs里面的文件

打开config里面的elasticsearch.yaml

  • cluster.name:集群的名字,同一个集群的节点应该相同
  • node.name:节点的名字,不同节点名字不同
  • node.master:是否可以作为master节点,一般设置为true
  • node.data:是否可以作为数据节点,一般设置为true
  • network.host:主机地址
  • http.port:访问端口
  • transport.tcp.port:通信端口,没有的话添加一下
  • http.cors.enabled:是否可以跨域
  • http.cors.allow-origin:哪些源可以访问此节点
  • discovery.seed_hosts:其他节点查找列表,格式:ip:通信端口
  • discovery.zen.fd.ping_timeout:查找超时时间
  • discovery.zen.fd.ping_retries:查找重试次数

单节点集群

我们之前使用的就是单节点的集群

节点的健康状态有三个

  • 绿色:健康
  • 黄色:警告
  • 红色:危险
    上面是8/11,因为我们之前建了三个索引lady、killer、heros,他们默认是有一个副本,但是没有分配到节点,所以整体是黄色的。

分布式集群

本地配置如下

配置 cluster.name node.name node.master node.data network.host http.port transport.tcp.port discovery.seed_hosts discovery.zen.fd.ping_timeout discovery.zen.fd.ping_retries http.cors.enabled http.cors.allow-origin
node my-application node true true localhost 9200 9300 [“localhost:9301”] 1m 5 true “*”
node-1 my-application node-1 true true localhost 9201 9301 [“localhost:9300”] 1m 5 true “*”

启动两个节点后再次查看集群

其中,星星代表主节点,原点代表数据节点。可以看到是健康的绿色。

查看腾讯云的集群状态

可以看到也是绿色的。

查看腾讯云ES的基础配置

可以看到3个ES节点,一个Kibana节点。这个节点预警是可以自己在集群监控的告警策略设置的,一般与CPU、内存的使用情况相关,浏览器插件的黄色是节点是否宕机。

故障转移

集群中只有一个节点时,一旦出现故障,服务就无法保证了,需要有冗余。上面插件的截图中,绿色加粗框的分片是主分片,细的就是副本。当添加一个节点时,ES会自动根据索引的配置来分配副本所在节点,有节点宕机时,不影响,当主节点宕机时,会重新选择主节点(选择node.master为true的)

水平扩容

多启动一个节点,会分散负载,重新分配分片,保持负载平衡。例如,前面本地由黄色变绿色。

路由计算&分片控制

多个分片,增加或查询数据时,应该存放到哪个分片或从按个分片取数据,有一个规则,成为路由计算。

路由计算:使用Hash算法:hash(id)%主分片数量

查询数据时,不一定访问主节点或主分片,选择哪一个都可以,这个选择过程,称为分片控制。

分片控制:用户可以访问任何一个节点获取数据,一般采用轮询的方式,该节点称为协调节点,若处于繁忙状态,可将请求转发至其他节点。

数据CRUD流程

写流程

1.客户端请求集群协调节点

2.协调节点将请求转换到指定的节点

3.主分片需要将数据保存

4.主分片需要将数据发送个副本

5.副本保存后,进行反馈

6.主分片进行反馈

7.客户端获取反馈

读流程

1.客户端发送查询请求到协调节点

2.协调节点计算数据所在的分片以及全部的副本位置

3.为了能够负载均衡,可以轮询所有节点

4.将请求转发给具体的节点

5.节点返回查询结果,将结果反馈给客户端

更新流程

1.客户端向Node1发送更新请求。

2.它将请求转发到主分片所在的Node3。

3.Node3从主分片检索文档,修改_source字段中的JSON,并且尝试重新索引主分片的文档。如果文档已经被另一个进程修改,它会重试步骤3,超过retry_on_conflict次后放弃。

4.如果Node3成功地更新文档,它新版本的文档并行转发到Node1和Node2上的副本分片,重新建立索引。一旦所有副本分片都返回成功,Node3向协调节点也返回成功,协调节点向客户端返回成功。

删除流程

逻辑删除:在每个提交节点添加**.del**文件,列出被删除文档的段信息,搜索后筛选掉。

物理删除:多个倒排索引合并时,进行物理删除。

分词器

内置的分词器对中文不友好,只会一个字一个字的分,无法形成词语。对拼音也不行,无法拆分。

之前建立索引,使用的默认分词器,中文分词结果如下。

拼音分词结果如下

因为腾讯云的ES集群已经安装好了ik分词器、pin分词器和简繁体转换分词器,这里就不在本地演示了,可以去对应的github官网下载安装。

IK分词器

查看ik分词器官方文档,可以看到

Analyzer:

  • ik_smart
  • ik_max_word

Tokenizer:

  • ik_smart
  • ik_max_word
GET _analyze
{
  "analyzer": "ik_max_word",
  "text": ["诗是自由的载体"]
}

结果如下图所示

Pinyin分词器

Analyzer:

  • pinyin ,

Tokenizer:

  • pinyin

Token-filter:

  • pinyin
GET _analyze
{
  "analyzer": "pinyin",
  "text": ["tangshisongci"]
}

结果如下图所示

简繁体转换器

查看官方文档可以看到

Analyzer:

  • stconvert

Tokenizer:

  • stconvert

Token-filter:

  • stconvert

Char-filter:

  • stconvert
GET _analyze
{
  "analyzer": "stconvert",
  "text": ["我向往诗和远方,也不会忘记她和故乡"]
}

结果如下图所示

参考

IK分词器-GitHub

Pinyin分词器-GitHub

简繁体转换器-GitHub

喜欢本文的请动动小手点个赞,收藏一下,有问题请下方评论,转载请注明出处,并附有原文链接,谢谢!

如有侵权,请及时联系。如果您感觉有所收获,自愿打赏,可选择支付宝18833895206(小于),您的支持是我不断更新的动力。

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
相关文章
|
7月前
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
8月前
|
存储 NoSQL 数据库
Redis 逻辑数据库与集群模式详解
Redis 是高性能内存键值数据库,广泛用于缓存与实时数据处理。本文深入解析 Redis 逻辑数据库与集群模式:逻辑数据库提供16个独立存储空间,适合小规模隔离;集群模式通过分布式架构支持高并发和大数据量,但仅支持 database 0。文章对比两者特性,讲解配置与实践注意事项,并探讨持久化及性能优化策略,助你根据需求选择最佳方案。
311 5
|
9月前
|
SQL 关系型数据库 数据库
【YashanDB知识库】OM仲裁节点故障后手工切换方案和yasom仲裁重新部署后重新纳管数据库集群方案
本文介绍了主备数据库集群的部署、OM仲裁故障切换及重新纳管的全过程。首先通过解压软件包并调整安装参数完成数据库集群部署,接着说明了在OM仲裁故障时的手动切换方案,包括关闭自动切换开关、登录备节点执行切换命令。最后详细描述了搭建新的yasom仲裁节点以重新纳管数据库集群的步骤,如生成配置文件、初始化进程、执行托管命令等,确保新旧系统无缝衔接,保障数据服务稳定性。
|
9月前
|
Cloud Native 关系型数据库 分布式数据库
登顶TPC-C|云原生数据库PolarDB技术揭秘:Limitless集群和分布式扩展篇
阿里云PolarDB云原生数据库在TPC-C基准测试中以20.55亿tpmC的成绩刷新世界纪录,展现卓越性能与性价比。其轻量版满足国产化需求,兼具高性能与低成本,适用于多种场景,推动数据库技术革新与发展。
|
6月前
|
Cloud Native 关系型数据库 分布式数据库
客户说|知乎基于阿里云PolarDB,实现最大数据库集群云原生升级
近日,知乎最大的风控业务数据库集群,基于阿里云瑶池数据库完成了云原生技术架构的升级。此次升级不仅显著提升了系统的高可用性和性能上限,还大幅降低了底层资源成本。
|
8月前
|
Cloud Native 关系型数据库 分布式数据库
登顶TPC-C|云原生数据库PolarDB技术揭秘:Limitless集群和分布式扩展篇
云原生数据库PolarDB技术揭秘:Limitless集群和分布式扩展篇
|
8月前
|
负载均衡 算法 关系型数据库
大数据新视界--大数据大厂之MySQL数据库课程设计:MySQL集群架构负载均衡故障排除与解决方案
本文深入探讨 MySQL 集群架构负载均衡的常见故障及排除方法。涵盖请求分配不均、节点无法响应、负载均衡器故障等现象,介绍多种负载均衡算法及故障排除步骤,包括检查负载均衡器状态、调整算法、诊断修复节点故障等。还阐述了预防措施与确保系统稳定性的方法,如定期监控维护、备份恢复策略、团队协作与知识管理等。为确保 MySQL 数据库系统高可用性提供全面指导。
|
8月前
|
Java Linux
CentOS环境搭建Elasticsearch集群
至此,您已成功在CentOS环境下搭建了Elasticsearch集群。通过以上介绍和步骤,相信您对部署Elasticsearch集群有了充分的了解。最后祝您在使用Elasticsearch集群的过程中顺利开展工作!
468 22
|
9月前
|
存储 缓存 Oracle
崖山数据库YashanDB的共享集群机制初探
YashanDB共享集群是崖山数据库系统的核心特性,支持单库多实例并发读写,确保强一致性与高可用性。基于Shared-Disk架构和Cohesive Memory技术,实现数据页协同访问及资源控制。其核心组件包括YCK、YCS和YFS,提供金融级RPO=0、RTO<10秒的高可用能力。通过自研“七种武器”(如页内锁、去中心化事务管理等),优化性能并解决读写冲突。相比Oracle RAC,YashanDB在TPC-C测试中性能高出30%,适用于金融、电信等关键领域,推动国产化替代进程。
崖山数据库YashanDB的共享集群机制初探
|
9月前
|
存储 SQL 并行计算
【赵渝强老师】达梦数据库MPP集群的架构
达梦数据库提供大规模并行处理(MPP)架构,以低成本实现高性能并行计算,满足海量数据存储和复杂查询需求。DM MPP采用完全对等无共享体系,消除主节点瓶颈,通过多节点并行执行提升性能。其执行流程包括主EP生成计划、分发任务、各EP并行处理及结果汇总返回。为确保高可用性,建议结合数据守护部署。
298 0

热门文章

最新文章