Index、Type、Document

1.index:索引是文档(Document)的容器,是一类文档的集合。

1)、索引(名词)

类比传统的关系型数据库领域来说,索引相当于SQL中的一个数据库(Database)。索引由其名称(必须为全小写字符)进行标识。

2)、索引(动词)

保存一个文档到索引(名词)的过程。这非常类似于SQL语句中的 INSERT关键词。如果该文档已存在时那就相当于数据库的UPDATE。

3)、倒排索引

关系型数据库通过增加一个B+树索引到指定的列上,以便提升数据检索速度。索引ElasticSearch 使用了一个叫做 倒排索引 的结构来达到相同的目的。

2.type:

在7.0开始,一个索引只能建一个Type为_doc,好像没有太多意义,所以就只能建一个了

3.Document:Index 里面单条的记录称为Document(文档),就是数据库里的数据了

集群、节点、分片、副本

1、集群
ElasticSearch集群实际上是一个分布式系统,它需要具备两个特性:

  1)高可用性

    a)服务可用性:允许有节点停止服务;

    b)数据可用性:部分节点丢失,不会丢失数据;

  2)可扩展性

    随着请求量的不断提升,数据量的不断增长,系统可以将数据分布到其他节点,实现水平扩展;

一个集群中可以有一个或者多个节点;

集群健康值

green:所有主要分片和复制分片都可用
yellow:所有主要分片可用,但不是所有复制分片都可用
red:不是所有的主要分片都可用

2、节点(Node)
 1)节点是什么?

    a)节点是一个ElasticSearch的实例,其本质就是一个Java进程;

    b)一台机器上可以运行多个ElasticSearch实例,但是建议在生产环境中一台机器上只运行一个ElasticSearch实例;

Node 是组成集群的一个单独的服务器,用于存储数据并提供集群的搜索和索引功能。与集群一样,节点也有一个唯一名字,默认在节点启动时会生成一个uuid作为节点名,

该名字也可以手动指定。单个集群可以由任意数量的节点组成。如果只启动了一个节点,则会形成一个单节点的集群。

3、分片
Primary Shard(主分片)

ES中的shard用来解决节点的容量上限问题,通过主分片,可以将数据分布到集群内的所有节点之上。

 

关于倒序索引:

id

name

age

1

zhang

12

2

li

14

3

wang

12

 

 

 

 

 

这样的数据会建立一下几个索引

name:

 

term

posting list

zhang

1

li

2

wang

3

 

 

 

 

 

age:

term

posting list

12

[1,3]

14

2

 

 

 

 

Posting List

Elasticsearch分别为每个field都建立了一个倒排索引,zhang, wang这些叫term,而[1,3]就是Posting List。存储了所有符合某个term的文档id。