【死磕ES】三、基本概念

Elastic Stack生态圈

  • Logstash:数据处理管道,负责数据采集和转换,可以实时获取IP,排斥敏感字段,拓展插件多,安全等特性
  • Beat:轻量数据采集器
  • Kibana:数据可视化工具
  • Elasticsearch:数据存储
  • X-Pack:商业化套件,负责安全

概念和数据库类比

运维维度,节点、分片

主要围绕两个概念:高可用拓展性

高可用:简称 HA,是系统一种特征或者指标,体现如下两点:

  • 服务可用性:允许部分节点停止服务,整体服务没有影响
  • 数据可用性:允许部分节点丢失,最终不会丢失数据

拓展性:将原来节点和增量数据重新从 10 个节点分布到 100 个节点,应对数据的猛增;

节点:是一个ES实例,本质上就是一个java进程,一个机器上可以运行多个实例,但是生产环境建议一台机器上只运行一个ES实例;

节点类型

  • Master-eligible Node 和 Master Node:Master Node 负责同步集群状态信息
  • Data Node 和 Coordinating Node:数据节点,用于保存数据
  • Hot & Warm Node:不同硬件配置的 Data Node,用来实现冷热数据节点架构,降低运维部署的成本
  • Machine Learning Node:负责机器学习的节点
  • Tribe Node:负责连接不同的集群。支持跨集群搜索 Cross Cluster Search
  • master node:通过 node.master 配置,默认 true
  • data node:通过 node.data 配置,默认 true
  • ingest node:通过 node.ingest 配置,默认 true
  • coordinating node:默认每个节点都是 coordinating 节点,设置其他类型全部为 false。
  • machine learning:通过 node.ml 配置,默认 true,需要通过 x-pack 开启。

分片

主分片:用来解决数据水平扩展的问题

副本分片:用来备份数据,提高数据的高可用性。副本分片是主分片的拷贝

节点、索引、分片总结

  • 一个节点,对应一个实例
  • 一个节点,可以多个索引
  • 一个索引,可以多个分片
  • 一个分片,对应底层一个 lucene 分片

倒排索引

1、举例

1)正排索引

2)倒排索引

 2、倒排索引核心组成

  • 词条(Term):索引里面最小的存储和查询单元,对于英文来说是一个单词,对于中文来说一般指分词后的一个词。

  • 词典(Term Dictionary):或字典,是词条 Term 的集合。搜索引擎的通常索引单位是单词,单词词典是由文档集合中出现过的所有单词构成的字符串集合,单词词典内每条索引项记载单词本身的一些信息以及指向“倒排列表”的指针。

  • 倒排表(Post list):一个文档通常由多个词组成,倒排表记录的是某个词在哪些文档里出现过以及出现的位置。

    每条记录称为一个倒排项(Posting)。倒排表记录的不单是文档编号,还存储了词频等信息。

  • 倒排文件(Inverted File):所有单词的倒排列表往往顺序地存储在磁盘的某个文件里,这个文件被称之为倒排文件,倒排文件是存储倒排索引的物理文件。

词典和倒排表是 Lucene 中很重要的两种数据结构,是实现快速检索的重要基石。词典和倒排文件是分两部分存储的,词典在内存中而倒排文件存储在磁盘上。

举例:

  • Java is the best programming language.

  • PHP is the best programming language.

  • Javascript is the best programming language.

 

原文地址:https://www.cnblogs.com/songjn/p/14371172.html