[ES] 基础概念
Elasticsearch是基于Luence实现的一款搜索引擎,支持分布式和集群,并且搜索近实时,主要用于搜索和数据分析
索引 index
- 可以理解为数据库中的database,存储的是实际数据,因为ES是以Luence为基础的,Luence索引是一种倒排索引结构,不同于数据库中的表面向行数据,索引是面向词而非面向文档,如下图是一个简单的存储结构:
- 一个索引由多个段组成,段的特性:写一次读多次,删除段中的文档本质并不能立即被删除,只有段合并的时候,Luence才会决定将其删除
- 索引命名必须是小写
主分片 primary shard
- 一个索引可以分为一个或者多个分片,存放在一台或者多台服务器上,每个分片都是独立的索引,提高了水平扩展能力,一旦创建好索引,分片数量无法更改
副本分片 replica shard
- 每个主分片可以拥有多个副本分片,每个副本分片都是主分片的完整拷贝,副本提高了容错率和查询吞吐量,副本数量可以在创建好索引后更改
类型 type
- 索引的逻辑分区,和文档ID一起用于标识文档
文档 document
- 相当于数据库中的行数据,存储在es中的主要实体,es为每个文档自动生成唯一标识符object_id
字段 field
- 多个字段组成一个文档
注意:一个索引的所有文档类型中对于具有相同名称的字段必须是同一种数据类型,与SQL SERVER不同,同一数据库中不同表中相同名称的列数据类型可以不一样
词 term
- 一个搜索单元
标记 token
- 词的文本、开始和结束的偏移量以及类型组成
何为分析?
- 一个文档如何转换为倒排索引,一个查询文本如何转化为可被搜索的词?这个转化过程就叫分析
负责分析的是谁?
- 分析器:由一个分词器和零个或多个标记过滤器和零个或多个字符映射器组成
分析的过程
- 首先,字符映射器对未经分析的文本进行处理,比如去除HTML标签
- 其次,分词器把文本分割成多个标记
- 最后,多个标记过滤器按顺序逐个对标记进行处理
映射Mapping
- 针对字段制定一些规则,比如某个字段是什么类型,是否需要经过分析存储等
节点 node
- 形成集群的每个ES服务器就是一个节点
集群
- 多个具有同名cluster name的ES节点构成集群
分布式
- 一个索引可以拆分成多个分片存储在多个节点上
ES核心类型
- string:字符串
- byte:字节数值
- short:短整型数值
- integer:整型数值
- long:长整型数值
- float:浮动型数值
- double:双精度数值
- boolean:布尔类型
- binary:二进制类型Base64
- date:日期 默认yyyy-MM-dd
- ip:ip地址类型