上篇文章安装完了es、es-head 、kibana。接下来我们开始真正的es学习。
学习这个es的话,其实呢还是先了解一下,es的核心概念。
Elastic 的底层是开源库 Lucene。但是,你没法直接用 Lucene,必须自己写代码去调用它的接口。Elastic 是 Lucene 的封装,提供了 REST API 的操作接口,开箱即用。
es是面向文档的,mysql是面向记录的。在es中,一切都是json!!!
es核心概念
和mysql做一个对比,从而理解下es。
es的索引index相当于mysql的数据库。es的类型types相当于mysql的表。es的文档documents相当于mysql的记录、行rows。es的fields相当于mysql的columns.
因此到目前为止,在es中进行搜索,其实就是索引--类型--文档进行检索
集群:多个es实例组成了一个es集群
节点:一个es实例就是一个节点
索引index:库
类型:表。类型是文档的逻辑容器,像表是记录的逻辑容器一样。
文档documents:记录,就是一个json对象,就是一条条数据。一个文档中还可包含文档,这样就构成了复杂的json
映射mapping:字段。类型中对于字段的定义叫映射。
分片:es将每个索引划分成多个分片,每个分片可以在集群中的不同服务器间迁移
es集群中包含多个es节点,一个es节点中包含多个索引,一个索引将会由5个主分片构成,每个主分片会有一个复制分片,每个索引包含类型,每个类型下又包含多个文档,每个文档包含多个字段。
上述es就是一个有三个节点的集群,发现主分片和复制分片都不在一个节点内。在这种程度上,说明了es的高可用、不至于某一个节点挂了,数据丢失。
一个分片实际上是一个Lucene索引,一个包含倒排索引的文件目录,倒排索引的结构使得es在不全文档扫描的情况下,就能告诉你哪些文档包含特定的关键字
倒排索引:
es采用的是倒排索引的结构,lucene采用倒排索引作为底层。倒排索引适用于快速的全文搜索