本文对ES中各个核心概念进行整理归纳。
集群和节点
一个集群由多个节点构成。还记得上一篇文章中的一主二从的三节点集群吗?
(1)在一个集群中,每个节点配置的集群名称是一样的。在配置时,所有的节点都是通过一个唯一的集群名字来加入集群的。
(2)一个节点只可以隶属于一个集群。
(3)每个节点还有它自己的名字。如之前master、slave1、slave2
(4)节点可以存储数据,参与集群索引数据,以及搜索数据的独立服务。
三大核心概念
索引:索引是含有相同属性的文档集合。
例如你可以用一个索引代表消费者的数据。另一个索引代表产品的数据。
索引在ES中是通过一个名字来识别的。而且必须是英文字母小写,且不含双划线。我们都是通过这个名字来进行增删改查的操作。
类型:一个索引里可以定义一个或者多个类型,通常我们会将有相同字段的文档作为一个类型。
文档:文档是可以被索引的基本数据单位。比如说一个用户的基本信息、一篇文章的数据等等。它是整个ES里面最小的存储单位。
(本文出自oschina博主happybks的博文:https://my.oschina.net/happyBKs/blog/1790876)
三大核心概念之间的关系
索引相当于sql里的一个database数据库。
类型相当于sql里的一个table表。
文档相当于sql里的一行记录。
举一个例子。
假设我们有一个信息查询系统,用ES来做存储。
里面的数据就可以分为各种各样的索引。比如汽车索引、图书索引、家具索引。
图书索引又可以细分为多种类型,比如说科普类的、小说类的、技术工程类的。
具体到每一本书籍,就是文档。就是整个信息系统中的存储物品信息的最小存储单位。
分片和备份
与索引相关的有两个高阶的概念:分片和备份
分片:在ES中,每个索引都有多个分片,每个分片都是一个Lucene索引。
备份:拷贝一个分片就完成的一个分片的备份。
为什么要分片?
分片的好处是:假设一个索引的数据量很大,就会造成硬盘压力很大;同时搜索速度也会出现瓶颈。那么你就可以将索引分成多个分片,从而分摊压力。
分片同时还允许用户进行水平的扩展和拆分,以及分布式的操作。可以提高搜索以及其他操作的效率。
备份还有哪些好处?
当一个主分片失败,或者出现问题时,备份的分片就可以代替工作。从而提供了ES的可用性。那么备份的分片还可以执行搜索操作,已分摊搜索的压力。
ES在创建索引时,默认会创建5个分片,1分备份。这个数量是可以修改的。
另外,分片的数量只能够在创建索引的时候指定。而不能在后期进行修改。而备份是可以动态修改的。