Elasticsearch的核心概念
1. 索引(index)
一个索引就是一个拥有几分相似特征的文档的集合。(对应mysql中的数据库)
2. 文档(document)
一个文档是一个可被索引的基础信息单元,也就是一条数据。(对应mysql中的表中一行)
文档以JSON格式来表示,而JSON是一个到处存在的互联网数据交互格式。
3. 字段(Field)
相当于是数据表的字段,对文档数据根据不同属性进行的分类标识。(对应mysql中的表中的字段)
4. 映射(mapping)
mapping是处理数据的方式和规则方面做一些限制,如:某个字段的数据类型、默认值、分析器、是否被索引等等,这些都是映射里面可以设置的。
5. 分片(shards)
一个索引可以存储大量的数据,但是在单节点上存储会受到硬件的限制,所以需要把完整的索引数据拆分成几块,每一块放在不同的服务器节点上,来统一提供服务,它们合在一块,就是完整的索引数据。所以每一部分每一块,称之为分片。
分片很重要,主要有两方面的原因:
- 允许你水平分割/扩展你的内容容量。
- 允许在分片之上进行分布式的,并行的操作,进而提高性能/吞吐量。
6. 副本(replicas)
一旦某一个分片的数据丢失了,它的副本还在,依然可以提供服务。
副本很重要,有两个原因:
- 在分片/节点失败的情况下,提供了高可用性。
- 扩展搜索量/吞吐量,因为搜索可以在所有的副本上并行运行。
7. 分配(Allocation)
将分片分配给某个节点的过程,包括分配主分片或者副本。如果是副本,还包含从主分片复制数据的过程。这个过程是由master节点完成的。
8.扩展知识:
- 主分片(指这里的分片)的数目在索引创建时就已经确定了下来,创建之后是无法再改的。
- 副本可以随时扩展。
以下是副本的扩展JSON(users是索引名称)