Elasticsearch原理

Lucene

Lucene是一个代码库,使用Java开发的搜索引擎,不利于分布式拓展。

Solr

Slor是基于Lucene开发的搜索引擎,是apache开源的搜索引擎,只支持Java。

Elasticsearch

ES也是基于Lucene开发,支持分布式,以及多种语言,拓展性比较好。支持TB级别的搜索(TB级别是1024T容量查询)。 ES是基于文档去检索的。

ES核心术语

  • 索引 Index
    • 相当于数据库的表
  • 类型 type
    • 相当于表的逻辑类型,用于区分索引,ES 7.x已经不在使用了,老得版本还在使用
  • 文档 document
    • 相当于行,是json的形式去存在的
  • 字段 fields
  • 映射 mapping
    • 相当于表结构定义
  • 近实时 NRT
    • Near real time 接近真实的时间,当新建一个文档之后,一般会有1秒左右的时间的延时
  • 节点 node
    • 每一个服务器,就是一个节点
  • shard replica
    • 数据分片与备份

集群相关

ES架构特点

分片(shard):把索引库拆分为多份,分别放在不同的节点上,比如有3个节点,3个节点的所有数据内容加在一起是一个完整的索引库,分别保存到三个节点上,目的为了水平拓展,提高吞吐量。 备份(replica):每个shard的备份。

简称

shard = primary shard(主分片) replica = replica shard(备份节点)

倒排索引

倒排索引就是将正排索引的文档内容进行分词,然后记录这个词在每个文档出现的文档ID。 倒排索引 词频TF:位置POS 词频是记录这个词在那个文档下出现的次数和位置,记录方法:1:1:<1>,表示文档ID1下,出现过1次,在下标为1的位置。 倒排索引词频

倒排索引源于实际应用中需要根据属性的值来查找记录。这种索引表中的每一项都包括u一个属性值和包含该属性的各个记录地址。由于不是根据记录来确定属性,而是根据属性来确定记录的位置,所以称之为倒排索引。