高校档案室网站建设,介绍网页设计,自学网站建设哪个网站好,能找本地人做导游的网站文章目录一、ES 相关名词 专业介绍二、ES 系统架构三、ES 创建分片副本 和 elasticsearch-head插件四、ES 故障转移五、ES 应对故障六、ES 路由计算 和 分片控制七、ES集群 数据写流程八、ES集群 数据读流程九、ES集群 更新流程 和 批量操作十、ES 相关重要 概念 和 名词十一、…
文章目录一、ES 相关名词 专业介绍二、ES 系统架构三、ES 创建分片副本 和 elasticsearch-head插件四、ES 故障转移五、ES 应对故障六、ES 路由计算 和 分片控制七、ES集群 数据写流程八、ES集群 数据读流程九、ES集群 更新流程 和 批量操作十、ES 相关重要 概念 和 名词十一、ES集群 文档刷新 文档刷写 文档合并十二、ES集群 文档分析十三、ES集群 文档控制十四、ES Kibana一、ES 相关名词 专业介绍
Elasticsearch 索引index一切设计都是为了提高搜索的性能。
Elasticsearch 类型type7.X版本以上的都已经不再支持索引类型了默认类型为_doc。
Elasticsearch 文档Document Elasticsearch 文档Field相当于数据表的字段对文档数据根据不同属性进行的分类标识。
Elasticsearch 映射Mapping Elasticsearch 分片Shards可以理解为分表效果将不同的分片放到不同的集群节点上。
Elasticsearch 副本Replicas备份的效果。
Elasticsearch 分配Allocation就是如何分配的效果。
二、ES 系统架构 三、ES 创建分片副本 和 elasticsearch-head插件
启动三台es节点服务器。
创建索引users 分配 3个主分片和一份副本每个主分片拥有一个副本分片。
// put方法http://127.0.0.1:1001/users
{settings : {number_of_shards : 3,number_of_replicas : 1}
}
// get方法http://127.0.0.1:1001/users
// 进行查看elasticsearch-head是一个浏览器插件专门来监控es集群的相关内容信息。 正常启动后的效果
四、ES 故障转移
单点集群故障问题其实单点了就不算是集群了自身宕机后三个主分片的数据和副本就没了。
多个节点集群时就避免了上面的问题出现
粗框的就是主分片其他的就是副本。
水平扩容当添加第三个节点的时候就会重新分配更加均衡提高吞吐量。 注意如何分配的 以及 最大扩容多少。 如果超过预期的扩容节点怎么办 扩容实现
// put方法http://127.0.0.1:1001/users/_settings
{number_of_replicas : 2
}五、ES 应对故障 六、ES 路由计算 和 分片控制
路由计算就是数据放到哪里应该从哪里取数据。 分片控制
虽说每一个节点都有备份有数据但是并不是访问哪个节点就会直接获取该节点数据。每个节点都可以是协调节点协调节点的效果如下。
七、ES集群 数据写流程
1. 客户端请求集群节点任意节点。 2. 协调节点将请求转换到指定的节点。 3. 主分片将数据保存。 4. 主分片将数据发送给副本。 5. 副本保存后反馈给主分片。 6. 主分片收到反馈后再反馈给客户端。 7. 客户端接收到反馈。
consistency 一致性参数 timeout 超时参数
八、ES集群 数据读流程
1. 客户端发送查询请求到协调节点。 2. 协调节点计算数据所在的分片以及全部的副本位置。 3. 为了能够负载均衡可以轮询所有节点。 4. 将请求转发给具体的节点。 5. 节点返回查询结果将结果反馈给客户端。
九、ES集群 更新流程 和 批量操作
更新流程与新增相同更新主片更新副本。
批量操作其实批量操作也可以分批到每个节点进行单节点相关操作。 十、ES 相关重要 概念 和 名词
分片原理就是倒排索引。 分片是Elasticsearch最小的工作单元。
Elasticsearch 使用一种称为倒排索引的结构它适用于快速的全文搜索。
倒排索引就是 反向索引inverted index。与之对应的是正派索引forward index。
其实就是分词的效果
还有一个分词器的概念因此有中文、英文等不同情况所以要用到分词器。
还有能分词不能分词的 text 和 keyword 。
ik_max_word最细粒度的拆分。 ik_smart最粗力度的拆分。 索引名词
词条索引中最小的存储和查询单元。词典字典词条的集合BHashMap。倒排表存在好多倒排项效果就是倒排索引解释一样。 倒排索引写入磁盘后是不可变的好处 坏处不可变
如何保留不变性的前提下实现倒排索引的更新
十一、ES集群 文档刷新 文档刷写 文档合并
ES是 近实施搜索的原理如下
十二、ES集群 文档分析
分析 原理过程
将一块文档分成适合于倒排索引的独立的 词条。将这些词条统一化为标准格式以提高它们的 可搜索性或者 recall分析器执行上面的工作。
分析器包含三个主要功能字符过滤器、分词器、Token过滤器。 ES有一些内置分析器标准分析器、简单分析器、空格分析器、语言分析器。 标准分析器 的使用
// get方法http://127.0.0.1:1001/_analyze
{analyzer:standard, // 标准分析器text:Text to analyze
}IK 中文分析器
ik中文分词器下载地址 https://github.com/medcl/elasticsearch-analysis-ik/releases/tag/v7.8.0
将解压后的文件夹放入ES根目录下的plugins目录下重启ES即可使用。
有些时候ik分词器并不知道有些词汇是一个单词所以还要告诉ik分词器哪些是一个单词。 文件目录如下 自定义分析器
创建索引的时候通过参数来自定义分析器。
// put方法http://127.0.0.1:1001/my_index
{settings: {analysis: {char_filter: {_to_and: {type: mapping, mappings: [ and ]}}, filter: {my_stopwords: {type: stop, stopwords: [the, a]}}, analyzer: {my_analyzer: {type: custom, char_filter: [html_strip, _to_and], tokenizer: standard, filter: [lowercase, my_stopwords]}}}}
}查询验证分析器
# GET http://127.0.0.1:9200/my_index/_analyze
{text:The quick brown fox,analyzer: my_analyzer
}十三、ES集群 文档控制
场景多个人并发进行处理操作文档时最后一个人操作的肯定覆盖掉了其他人操作的理论上应该是这样但实际会出现一个乱序的情况不确定谁先完成那么这种情况应该如何避免。
使用悲观锁 和 乐观锁来处理类似问题 ES 乐观锁
效果如下
// post方法http://127.0.0.1:1001/shopping/_update/1001?if_seq_no1if_primary_term1
// 通过if_seq_no1if_primary_term1来操作乐观锁
{doc:{title:华为手机}
}外部系统版本控制
例如就是想通过version来进行判别操作
// post方法http://127.0.0.1:1001/shopping/_doc/1001?version3version_typeexternal
// 通过声明version_typeexternal参数。
{title: 测试手机
}版本必须相同或者大于该版本才能进行修改
十四、ES Kibana kibana配置文件 类似如下可视化页面