Elasticsearch-简介

 
概述:
  Es 本质上就是由分布式思想 + lucene 组合合成, 因为 lucene 的存在, 它比一般的分布式系统会稍微复杂一点, es 采取的分布式思想是 分片 + 副本 + 去中心化
lucene 核心倒排索引, 和 B-Tree 索引, k-v 索引数据结构不一样, 倒排索引是一种符合索引, 它分为两部分, 词表 + 倒排表, 词表采用的索引数据结构是 FST. 搜索的本质就是 and 和 or 查询, 转换到倒排里面, 就是链表求交集和并集的一个过程.
  Es有完整的生态链
Elastic Stack = file beat + logstash + es + kibana + ml + security + report
 
1. 集群
  一个或多个安装 Elasticsearch 的服务器节点组织在一起就是集群, 它们的共同持有你整个的数据, 并一起提供索引和搜索功能. 一个集群有一个唯一的名字标识, 称为 cluster name, 集群名称默认是 elasticsearch. 集群名称非常重要, 就像一个组织的名称, 具有相同集群名称的节点才会组成一个集群. 集群名称可以在配置文件中指定.
 
2. 节点
  一个节点是你集群中的一个服务器, 作为集群的一部分, 它存储你的数据, 参与集群的索引和搜索功能.
  一个节点可以通过配置集群名称的方式来加入一个指定的集群. 默认情况下, 每个节点都会被安排加入到一个名称为 elasticsearch 的集群中, 这意味着如果你在你的网络中启动了若干个节点, 并假设他们能够互相发现彼此, 他们将会自动的形成并加入到一个叫做 elasticsearch 的集群中. 但是有的时候这种机制并不可靠, 会发生脑裂, 往往不如在每一个节点上配置节点的名字在启动时进行被动发现来的安全稳定.
 
3. 索引
  一个索引就是一个拥有几分相似特征的文档的集合, 索引的数据仍然是倒排索引.
 
4. 类型
  在一个索引中, 可以定义一种或多种类型. 一个类型是你的索引的一个逻辑上的分类或分区, 其语义完全由你来订. 荣昌, 会为具有一组共同字段的文档定义一个类型.
 
5. 文档
  一个文档是个可被索引的基础信息单元.
 
6. 分片
  一个索引可以存储超出单个节点硬件限制的最大数据. 比如, 一个具有 10 亿 文档的索引占据 1TB 的磁盘空间, 而任何一个节点都没有这么大的磁盘空间; 或者单个节点处理搜索请求, 响应太慢. 为了解决问题, Elasticsearch 提供了将索引划分成多份的能力 这些份就叫作分片. 当你创建一个索引的时候, 可以指定想要的分片的数量, 每个分片本身也是一个功能完善并且独立的 "索引", 这个 "索引" 可以被放置到任何集中的任何节点上.
分片之所以重要, 主要是有一下两方面的原因:
允许水平分隔 / 扩容 容量
允许在分片(潜在的, 位于多个节点上) 进行分布式的, 并行的操作, 进而提高性能和吞吐量, 至于一个分片怎样分片, 它的文档如何聚合搜索请求,完全由 Elasticsearch 管理, 对于用户来说, 这些都是透明的.
 
7. 副本
  在一个网络 / 云 的环境里, 失败随时可能发生, 在某个分片或节点不知怎么的就处于离线状态, 或者由于某种原因消失了, 这种情况下, 有一个故障转移机制非常有用, 并且也是强烈推荐的. 为此, Elasticsearch 允许创建分片的一份或多份拷贝, 这些拷贝叫做复制分片, 或者直接叫副本.
副本之所以重要,有以下两个主要原因:
在分片 / 节点失败的情况下, 保证高可用性. 因为这个原因, 复制分片不与主分片置于同一个节点上, 这一点非常重要.
扩展搜索量/ 吞吐量, 因为搜索可以在所有的副本上并行运作.
 
  每个索引可以被分成多个分片. 一个索引可以有一至多个副本. 一旦有了副本, 每个索引就有了主分片和副本分片之别. 分片和副本的数量可以在索引创建的时候指定. 在索引创建之后, 可以在任何时候动态地改变副本的数量, 但是事后不能改变分片的数量.
 
 
 
posted @ 2022-11-01 18:12  茄子777  阅读(38)  评论(0)    收藏  举报