Elasticsearch基础
Elasticsearch是一个开源搜索服务器项目,是优秀的全文搜索和分析引擎。
1.数据架构的主要概念
(1)索引
索引(index)是Elasticsearch对逻辑数据的存储,所以它可以分为更小的部分。可以看作关系型数据的表。
Elasticsearch可以把索引放在一台机器或分散在多台服务器上,每个索引有一个或多个分片(shard),每个分片可以有多个副本。
(2)文档
存储在Elasticsearch中的主要实体叫做文档(document)。可以看作关系型数据库的一行记录。
文档由多个字段组成,每个字段可以多次出现在一个文档中,这样的字段叫做多值字段。每个字段是有类型,如文本,数值,日期等。字段也可以是复杂类型,一个字段包含其他子文档或数组。
字段类型在Elasticsearch中很重要,因为它给出了各种操作(如分析或排序)如何被操作的信息。文档不需要固定的结构,每个文档可以有不同的字段。
(3)文档类型
在Elasticsearch中,一个索引对象可以存储多个不同用途的对象。如一个博客引用程序中可以保存文章和评论。
(4)映射
Elasticsearch在映射中存储有关字段的信息,如数值字段和从网页上抓取的文本字段需要有不同的分析。每个文档类型都有自己的映射,即使我们没有定义。
从上面我们知道Elasticsearch把数据存储在一个或多个索引上,每个索引包含各种类型的文档。每个文档有很多字段,映射定义了Elasticsearch如何字段这些字段。
2.Elasticsearch主要概念
(1)节点和集群
Elasticsearch可以作为一个独立的单个搜索服务器,不过为了处理大型数据集,实现容错和高可用,Elasticsearch可以运行在多台服务器上,这些服务器组成集群,单台服务器成为节点。
(2)分片
在处理大量数据时,单个节点由于内存有限、磁盘有限,从而无法快速响应客户端请求,这种情况下,数据可以分为较小的部分(分片),每个分片在不同服务器上,最后把结果合并起来。
分片能加快索引。
(3)副本
副本只是一个分片的精确复制,每个分片可以有零个或多个副本。也就是说Elasticsearch可以有多个相同的分片,其中之一被选择去更改索引操作,这个分片称为主分片,其余是副分片,当主分片丢失时,集群会把副本提升为主分片。