以下总结点为自己思路总结,有不正确地方,请斧正。
ES中的基本概念一 ……索引
- 索引:存放在ES中同一个类型文档的集合叫做ES中的索引,类似于关系数据库中的Table
ES中的基本概念二 ……Mapping、Setting
- Mapping:存放在索引中每一个文档的中字段映射关系类型,类似于关系数据库中的schema,表结构
- Setting:定义文档数据存放的不同位置信息,主要用来设置分片和副本数量
ES中基本概念三 ……Document
- Document:存放在索引中的没一条数据,叫做文档,是所有可搜索数据的最小单位,存放JSON格式的数据。每个文档有一个唯一ID,可以指定,还可以通过elasticsearch自动生成。类似于关系数据库中的row。
ES中基本概念四 ……type
- type:类型,在ES6之后已经废弃type,默认的一种是_doc类型
基本概念对比关系
elasticsearch | RDBMS |
---|---|
INDEX | TABLE |
DOCUMENT | ROW |
FIELD | COLUMN |
MAPPING | SCHEMA |
DSL | SQL |
ES中基本概念五 ……倒排索引
- 正排索引:文档ID到文档内容和单词的关联
- 倒排索引:单词到文档ID的关系,将关键词作为具体的key,具体的行作为value。通过匹配key,找到value。
- 倒排索引的核心组成
- 单词词典:记录所有文档的单词,记录单词到倒排列表的关联关系
- 倒排列表:记录了单词对应的文档结合,由倒排索引项组成
- 倒排索引项
- 文档ID
- 词频 TF - 该单词在文档中出现的次数,用于相关性评分
- 位置 - 单词在文档中分词的位置,用于语句搜索
- 偏移 - 记录单词的开始结束位置,实现高亮显示
ES中基本概念六 ……数据类型
一级分类 | 二级分类 | 具体类型 |
---|---|---|
核心类型 | 字符串类型 | text,keyword(string从ES5开始不再支持) |
h | 整数类型 | integer,long,short,byte |
h | 浮点类型 | double,float,half_float,scaled_float |
h | 逻辑类型 | boolean |
h | 日期类型 | date |
h | 范围类型 | range |
h | 二进制类型 | binary |
复合类型 | 数组类型 | array(数组中的类型要一致) |
f | 对象类型 | object |
f | 嵌套类型 | nested |
地理类型 | 地理坐标类型 | geo_point |
d | 地理地图 | geo_shape |
特殊类型 | IP类型 | ip |
t | 范围类型 | completion |
t | 令牌计数类型 | token_count |
t | 附件类型 | attachment |
t | 抽取类型 | percolator |
ES中基本概念七 ……节点
- 节点:一个运行Elasticsearch的java进程。
- Data Node: 负责保存分片数据
- Coordinating Node:负责接受Client的请求,将请求分发到合适的节点,最终把结果汇总到一起,每个节点默认都有这个职责
ES中基本概念八 ……集群
- 集群:将一个或者多个ES的节点组合在一起,整体的数据才是全部的数据,并对外提供服务。
- 集群解决了什么问题?
- 解决了单点故障问题
- 解决了高并发访问问题
- 解决了存储容量问题
ES中基本概念九 ……分片
- 分片:用以解决数据水平扩展的问题,在索引创建时指定,后续不允许修改,一份主分片是一个lucene的实例,索引的一部分或全部数据。数据集合切分成多个部分,保存在不同的机器上。
ES中基本概念十 ……副本
- 副本:用以解决数据高可用的问题,是主分片数据的拷贝