目录

  • 集群
    • 集群配置
    • 单节点集群
    • 分布式集群
    • 故障转移
    • 水平扩容
    • 路由计算&分片控制
    • 数据CRUD流程
      • 写流程
      • 读流程
      • 更新流程
      • 删除流程
  • 分词器
    • IK分词器
    • Pinyin分词器
    • 简繁体转换器
  • 参考

上篇文章主要分享了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

更多ELK相关内容:数据库-ElasticSearch学习笔记_lady_killer9的博客-CSDN博客
喜欢本文的请动动小手点个赞,收藏一下,有问题请下方评论,转载请注明出处,并附有原文链接,谢谢!
如有侵权,请及时联系。如果您感觉有所收获,自愿打赏,可选择支付宝18833895206(小于),您的支持是我不断更新的动力。

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

  1. 数据库-Elasticsearch进阶学习笔记(分片、映射、分词器、即时搜索、全文搜索等)

    目录 基础概念 定义 特点 索引(Index) 分片(Shards) 副本(Replicas) 分配(Allocation) 映射(Mapping) 动态映射 显式映射 常见数据类型 文档(docum ...

  2. Hadoop学习笔记-集群部署

    前期准备 使用三台主机,每台安装好JDK和Hadoop 参考:Hadoop学习笔记–单台安装 同步小技巧 scp–rsync–编写xsync scp是主机之间安全拷贝数据的工具,一般的语法为 scp ...

  3. Kubernetes进阶学习之集群维护与升级实践

    0x00 Kubernetes Etcd 数据备份与恢复 1) 备份 ETCD 数据实践 2) 恢复 ETCD 数据实践 0x01 Kubernetes 单 Master 节点(次版本)升级实践 0x ...

  4. 阿里P8架构师进阶心得:分布式数据库架构MyCat学习笔记送给你

    前言: MyCat 是一个数据库分库分表中间件,使用 MyCat 可以非常方便地实现数据库的分库分表查询,并且减少项目中的业务代码.今天我们将通过数据库架构发展的演变来介绍 MyCat 的诞生背景,以 ...

  5. Docker下Redis Cluster分片集群的搭建、基本操作、集群扩容和集群故障转移(非关系型数据库技术课程 第九周)

    文章目录 Docker 下Redis Cluster 分片集群搭建 1. Cluster 分片集群 1.1 Cluster 集群的结构和作用 1.2 Cluster 分片集群 的作用 1.3哈希槽(h ...

  6. Redis 进阶学习笔记

    Redis进阶学习笔记 阅读Redis.conf配置文件 # 61, 绑定的 IP , 一般注释掉该命令,这个吗,命令表示仅接受本机的(IP为本机)客户端连接, bind 127.0.0.1 # 80 ...

  7. 【ElasticSearch】学习笔记(三)es的高级操作

    [ElasticSearch]学习笔记(三)es的高级操作 文章目录 [ElasticSearch]学习笔记(三)es的高级操作 1. 数据聚合 1.1 聚合总类 1.2 DSL实现聚合 1.2.1 ...

  8. java分布式免费开源搜索引擎 Elasticsearch 详细学习笔记

    网页右边,向下滑有目录索引,可以根据标题跳转到你想看的内容 如果右边没有就找找左边 此文是学习尚硅谷Elasticsearch课程的笔记 Elasticsearch 全文检索引擎 Lucene 是 A ...

  9. 【Elasticsearch】zen discovery集群发现机制

    1.概述 转载:https://blog.csdn.net/yangshangwei/article/details/103996803 继续跟中华石杉老师学习ES,第64篇 课程地址: https: ...

最新文章

  1. Magic Leap 2实测出炉:视场角增大20度,重量减轻20%,透光率低至0.3%让AR特效更逼真...
  2. python【数据结构与算法】分治算法之大整数乘法
  3. 心形尺寸比例图解_0元图解建筑史-05 | 中国木构建筑的特征与详部演变(2)——斗栱、厅堂殿堂...
  4. ccs 移植创建新工程_LiteOS裸机驱动移植05 | E53_SF1智慧消防扩展板驱动及使用
  5. 2015-2020年各类国际会议与期刊基于图像的三维对象重建论文综述(2)——Encoder stage
  6. WPF 位置转化和动画
  7. 前端开发~uni-app ·[项目-仿糗事百科] 学习笔记 ·006【底部导航开发】
  8. 图像视频信息库改直播服务器,短视频直播系统,开发流程详细解析
  9. linux创建删除用户和用户组
  10. 路面压电发电,应该有前途
  11. 这几天可能是长时间关注电脑,眼睛没有得到休息,所以就早上起来眼睛有点通...
  12. 超全超详细Rime中州韵输入法配置指南
  13. php 心愿墙系统源码,php开发|源码|微信留言板|微信表白墙|吐槽墙|心愿墙|2017V2.1版...
  14. 集成学习中boosting、bagging、随机森林算法的介绍
  15. 自己做一个属于自己的论坛html网站
  16. tableau ODBC驱动下载方法和链接(连接mysql的驱动)
  17. 如何计算电商网站页面单跳转化率?
  18. java -英语单词接龙
  19. 全景视频拼接算法参考资料
  20. 开篇-漫漫人生路-程序员

热门文章

  1. 《C++新经典Linux C++通信架构实战》第1章 课程介绍
  2. 统一认证管理系统(单点登录系统)sso 浅谈
  3. 2. 【短语、直接短语、句柄】概念、做题步骤
  4. 合租,北漂生活的一抹温情
  5. Maven配置 settings.xml 配置阿里云镜像
  6. Week 5: Management of the Sporadic Nature of Data Flows 4 - UE-Triggered Service Request
  7. 如何卸载手机系统应用
  8. “The user name or passphrase you entered is not correct “ for Mac Xcode
  9. SLAM导航机器人零基础实战系列:(六)SLAM建图与自主避障导航——1.在机器人上使用传感器...
  10. Android自定义组件——3D立体旋转控件