面向文档
Elasticsearch 与 Relational DB 类比
![](https://img.haomeiwen.com/i16115945/da8c768fd5266c2c.png)
物理设计
在创建索引后,ES会为我们默认构建5个分片和1个副本,散列的分布在ES节点中
![](https://img.haomeiwen.com/i16115945/26faced7ee626eee.png)
逻辑设计
当我们要索引一篇文档时,可以这样找到它:索引-->类型-->文档ID(注意:ID不必是整数,它实际是个字符串)
![](https://img.haomeiwen.com/i16115945/868330467244dfef.png)
倒排索引
在上文我们知道ES会帮我们把索引的数据分片存储,而一个分片实际是一个包含倒排索引
的文件夹。怎么理解?
先看看ES底层的索引库存储:索引区
![](https://img.haomeiwen.com/i16115945/1cbef04316fdeb4e.png)
而ES则是通过倒排索引
的方式进行索引区的存入的:记录分词出现的ID和次数
举例:如下图如果要查linux,那么elasticsearch将直接访问到ID 3、4
![](https://img.haomeiwen.com/i16115945/713fc1908969bbec.png)
文档
- 类比表: 包含字段和对应的值
- 多层次:如文档中包含文档,从而组成复杂的逻辑实体
- 无模式:文档不依赖预先定义好的字段,可以忽略或动态新增字段
类型
类型中对于字段的定义称为映射,比如name 的映射为字符串。如果没有预先定义好类型,那么ES会自己判断,比如字段值18 ,elasticsearch就认为它是整形,而elasticsearch也可能猜不对。所以最好预先定义好字段类型
网友评论