文章目录
索引 index
一个索引就是一个拥有几分相似特征的文档的集合.
特点是要有相似性.
商品数据作为索引.
订单数据作为索引.
而不要把商品数据和订单数据放在一起作为索引, 因为他们没有相似性.
一个索引由一个名称来标识, 且索引的名称必须全部是小写字母.
对索引中的文档数据, 进行搜索, 更新, 删除时 ,都要用到这个索引名称.
在一个集群中, 可以定义任意多的索引.
能搜索的数据, 必须建立索引, 可以提高查询速度, 索引类似字典前的目录.
索引的精髓: 一切都是为了提高搜索的性能.
类型 type
一个索引可以定义多个类型.
一个类型是你的索引的一个逻辑上的分类/分区
语义由你自身来定义, 会为了具有共同字段的文档定义一个类型.
类型的概念在es7中已经被剔除.
早期是为了把type类比关系型数据库的表处理.
但这样对搜索没有什么用处了.
文档 document
一个文档是一个可以被索引的基础信息单元, 是一条数据.
保存一条数据是一个文档.
字段 field
相当于数据库表的字段, 对文档数据根据不同的属性进行分类的标识.
映射 (mapping)
映射类似于表的结构信息. 是处理数据的方式和规则上做的一些限制.
对字段是否可被分词, 是否可以被查询, 做的一些处理.
分片 (shards)
类似于MySQL数据库的分表 .
一个索引可以存储大量的数据, 但是在单节点上会受存储容量的限制.
而且如果一个单节点存储数据较多, 响应也会变慢.
es提供了把索引划分为多份的能力, 每一份叫做分片, 创建索引的时候, 可以指定分片的数量.
分片重要的原因:
- 允许水平切割扩展数据容量
- 允许分片的分布式查询, 提高性能.
分片如何进行聚合和请求搜索, 完全是由es来进行管理的.
一个索引是es分片的集合, 当es在索引中搜索的时候, 发送查询到每一个属于索引的分片, lucence 索引, 合并每个分片的结果到一个全局的结果集.
副本 (replicas)
为了防止数据丢失, es允许创建分片的时候, 进行一份或多份的拷贝, 叫做复制分片(副本.)
复制分片重要的原因:
- 在分片/节点失败的情况下, 提高了高可用性, 复制分片不与主分片在同一台节点上.
- 扩展了搜索量. 搜索数据可以从副本上去搜索.
分配 (allocation)
将分片分配给某个节点的过程, 包括分配主分片或者副本, 如果是副本, 还包含从主分片复制数据的过程, 由master节点完成.