• java
  • go
  • 数据库
  • linux
  • 中间件
  • 书
  • 源码
  • 夕拾

  • java
  • go
  • 数据库
  • linux
  • 中间件
  • 书
  • 源码
  • 夕拾

es的简介

  • es简介
    • index与shard
    • mapping与setting
    • 字段
  • 集群
    • 节点
      • master与master-eligible
      • data与coordinate
      • 其他节点
      • 节点配置
    • 分片
      • 主分片
      • 副本
      • 健康状态
    • 分词
      • standard-analyzer
      • simple-analyzer
      • whitespace-analyzer
      • stop-analyzer
      • keyword-analyzer
      • pattern-analyzer
      • language-analyer
      • 中文分词
  • 搜索

es简介

index与shard

  • index: 逻辑空间概念,每个索引都有自己的mapping定义,用于定义包含文档的字段名和字段类型
  • shard: 体现了物理空间的概念:索引数据分散在shard上.

7.0之前有type,7.0之后只有一个type_doc

mapping与setting

  • mapping定义文档类型
  • setting定义存储类型,不同的数据分布

字段

字符串,数值,bool,date,二进制,范围类型

集群

不同集群通过不同命名区分
修改配置文件或者 命令行启动 -E cluster.name=XXXX

一个集群可以有多个节点.

节点

节点就是一个es实例(java进程)
节点命名修改配置文件或者 -E node.name=XXXX
节点启动后会分配一个uid,保存在data目录下

每个节点启动后,默认就是一个master-eligible节点
配置文件 node.master:false禁止

master与master-eligible

可以参加选主流程,成为master节点

第一个节点启动时,将自己选举为master节点.

每个节点都保存了集群状态,只有master节点能修改集群信息

集群状态: 维护了集群中必要信息

  • 所有节点信息
  • 所有索引和其相关的mapping和setting
  • 分片的路由信息

任意节点都能修改信息会导致数据不一致性

data与coordinate

保存分片数据

coordinate接收client请求,分发到不同node,然后再汇总返回.
每个节点都起到coordinate节点的作用

其他节点

冷热节点,机器学习节点…

节点配置

  • 开发环境一个节点可以承担多个角色
  • 生产环境应该设置单一的角色节点

参数: node.master,node.data, node.ingest,node.ml(需 enable-xpack) 默认值都为true

分片

primary shard

replica shard

主分片

主分片: 解决数据水平扩展的问题.通过主分片,将数据分布到集群内的所有节点之上.
主分片数在索引创建时指定,后续不允许修改,触发reindex
一个分片运行的是一个lucene实例

副本

解决数据高可用问题(主分片的拷贝)
副本片数:动态调整
增加副本数,可以在一定程度上提高服务的可用性(读的吞吐)

健康状态

green
yellow 副分片无法分配
red 主分片无法分配

分词

_analyze api

  • 直接指定analyzer进行测试
    1
    2
    3
    4
    5
    Get /_analyze
    {
    "analyzer":"standard",
    "text":"xxxx"
    }
  • 指定索引的字段进行测试
    1
    2
    3
    4
    5
    POST indexName/_analyze
    {
    "field":"title",
    "text":"xxxx"
    }
  • 自定义分词进行测试
1
2
3
4
5
6
POST /_analyze
{
"tokenizer":"standard",
"filter":"["lowercase"],
"text":"xxxxx"
}

standard-analyzer

按照空格/非字母方式
字母转小写

simple-analyzer

按照非字母切分,非字母的被去除
字母小写处理

whitespace-analyzer

stop-analyzer

会把 the a is 等修饰性词汇去除

keyword-analyzer

不分词,将输入作为输出
(对输入不需要做分词时,选择keyword-analyzer)

pattern-analyzer

通过正则表达式分词
默认是\W+,非字符的符号进行分割

language-analyer

中文分词

icu-analyzer

IK 支持自定义词库,热更新分词词典

thulac 清华大学

搜索

URI search

request body search

脚本字段

redis宕机恢复
es的相关配置
  1. 1. es简介
    1. 1.1. index与shard
    2. 1.2. mapping与setting
    3. 1.3. 字段
  2. 2. 集群
    1. 2.1. 节点
      1. 2.1.1. master与master-eligible
      2. 2.1.2. data与coordinate
      3. 2.1.3. 其他节点
      4. 2.1.4. 节点配置
    2. 2.2. 分片
      1. 2.2.1. 主分片
      2. 2.2.2. 副本
      3. 2.2.3. 健康状态
    3. 2.3. 分词
      1. 2.3.1. standard-analyzer
      2. 2.3.2. simple-analyzer
      3. 2.3.3. whitespace-analyzer
      4. 2.3.4. stop-analyzer
      5. 2.3.5. keyword-analyzer
      6. 2.3.6. pattern-analyzer
      7. 2.3.7. language-analyer
      8. 2.3.8. 中文分词
  3. 3. 搜索
© 2023 haoxp
Hexo theme