ES作为大数据的组件,使用的范围越来越广,相关配套也越来越好。本文将对自己在ES学习中碰见的问题进行基本的介绍。
ES的组成
01
01
ES集群
ES集群指的是多台ES服务器,也就是多个节点
02
01
ES节点
一个节点就是一个ES服务器
03
01
ES分片
分片一般指的是索引的分片,一个索引有多个分片,分片分为主分片和副分片。分片分部在不同的节点上。一个分片就是一个Lucene索引。
04
01
ES概论解析
索引-index相当于关系数据库,文档-Type相当于表,文档-Doc相当于行,Field相当于列,映射Mapping相当于Schema约束。
ES的类型
01
01
核心类型
字符串和数值型
02
01
数组和多元字段
主要是在某个字段存储相同核心类型的多个值。比如多个标签
03
01
预定义字段
_ttl文档的存活时间
_timestamp 索引文档索引的日期
_source 控制文件存储的,存储原始Json,后期使用更新API更新文档的内容时候有用,_source其实是Lucene的存储字段
_all 索引所有字段,可以设置哪个字段不被_all包含。
_uid 文档类型type和ID的结合体
_id 识别文档,没有被索引
_type 识别文档,被索引
_index 识别文档
_size 索引原始JSON内容的大小
_routing 控制文档路由
_parent
ES的查询和索引过程
01
01
ES的查询
一个查询提交后,会同时向一个索引的多个分片进行查询,分布式查询;查询的结果会整合返回,如上图所示。
02
01
ES的索引过程
当文件被插入时,需要经过分析器,分析器对插入的文档进行分词,建立词条,在分析的过程中词全部转换为小写。
文档插入时,有一个索引(index)选项,index选项值,analyzed,not_analyzed和no:
其中analyzed是默认值,分析器将所有的字符转换为小写,并且分解为单词。
not_analyzed表示分析过程会被忽略,整个字符串被当做单独的词条。
no表示没有词条,被忽略。