为了账号安全,请及时绑定邮箱和手机立即绑定

【九月打卡】第9天 手把手带你快速搞定分布式搜索引擎ES

标签:
架构

课程名称Java架构师-技术专家
课程章节: 第10周 手把手带你快速搞定分布式搜索引擎ES
课程讲师: 慕课讲师团队

课程内容

分词和分词器

什么是分词

把文本转换成为一个个的单词,分词称之为analysis。es默认只对英文语句做分词,中文不支持,每个中文字都会被拆分为独立的个体。

  • 英文分词:I study in imooc.com
  • 中文分词:我在慕课网学习
POST /_analyze
{
    "analyzer":"standard",
    "text":"text文本"
}
POST /my_doc/_analyze
{
    "analyzer":"standard",
    "field":"name",
    "text":"text文本"
}

es内置分词器

  • standard:默认分词,单词会被拆分,大小会被转换为小写。
  • simple:按照非字母拆分。大写转为小写
  • whitespace:按照空格分词。忽略大小写
  • stop:去除无意义单词,比如 the/a/an/is
  • keyword: 不做分词。把整个文本作文一个单独的关键词

建立IK中文分词器

  • zip解压:unzip xxx.zip -d ik
    解压到elasticsearch的插件目录下

  • ik_smart:智能分词:会做最粗粒度的拆分,适合Phrase查询

  • ik_max_word:最大分词:会将文本做最细粒度的拆分,穷尽各种可能的组合,适合Term Query

自定义中文词库

  1. 在{es}/plugins/ik/config下,创建:
vim custom.dic
  1. 并且添加内容:
慕课网
骚年
  1. 配置自定义扩展词典
<entry key="ext_dict">custom.dic</entry>
  1. 重启

ElasticSearch集群

集群不仅可以实现高可用,也能实现海量数据的横向扩展。

分片机制

每个索引可以被分片,就相当于吃披萨的时候被切了好几块,然后分给不同的人吃

  • 每个主分片都包含索引数据的一部分
  • replica shard 其实就是primary shard的一个备份,如果primary shard挂了,replica shard还是可以继续去访问的,这个时候就需要用到集群了。
  • 同一个分片的主与副本是不会放在同一个服务器里的,因为一旦宕机,这个分片就没有了
    图片描述
  • 不管是服务器1、服务器2、服务器3,其中的一台宕机,集群仍然可以为用户提供完整的服务。

配置集群

# 配置集群名称,保证每个节点的名称相同,如此就能都处于一个集群之内了
cluster.name: es

# 每一个节点的名称,必须不一样
node.name: node-1

# http端口(使用默认即可)
http.port: 9200

# 主节点,作用主要是用于来管理整个集群,负责创建或删除索引,管理其他非master节点(相当于企业老总)
node.master: true

# 数据节点,用于对文档数据的增删改查
node.data: true

# 集群列表
discovery.seed_hosts: ["192.168.0.221", "192.168.0.222", "192.168.0.223"]

# 启动的时候使用一个master节点
cluster.initial_master_nodes: ["node-1"]

最后可以通过如下命令查看配置文件的内容:

more elasticsearch.yml | grep ~[~#]
cluster.name: es-cluster
node.name: node-3
path.data: /usr/local/elasticsearch/data
path.logs: /usr/local/elasticsearch/logs
network.host: 0.0.0.0
http.port: 9200
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true
discovery.seed_hosts: ["192.168.0.221", "192.168.0.222","192.168.0.223"]
cluster.initial_master_nodes: ["node-1"]

集群脑裂

图片描述

  • 什么是脑裂? 如果发生网络中断或者服务器宕机,那么集群会有可能被划分为两个部分,各自有自己的master来管理,那么这就是脑裂。

  • 在新版本7.x中,minimum_master_node这个参数已经被移除了,这一块内容完全由ES自身去管理,这样就避免了脑裂的问题,选举也会非常快。

文档读写原理

协调节点负责接收用户的请求

  • 写包含了文档的新增、修改、删除
    图片描述
  • 文档读写原理

课程内容

今天学习了 ES 的分词和分词器,集群原理。
图片描述

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
6
获赞与收藏
11

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消