美文网首页
Elasticsearch基础

Elasticsearch基础

作者: 奋斗的韭菜汪 | 来源:发表于2020-10-13 21:51 被阅读0次

Elasticsearch天然是分布式,由一个或者多个节点实例组成
Node节点(服务程序运行实例)
Index索引(数据存储逻辑空间,例如mysql的表)
一个索引至少由一个分片组成,也可以由主分片和副本分片组成
Shard分片(数据存储实际逻辑空间,单分片就是完整索引数据)
(写数据必须先写到主分片P,然后再写到副本分片R)
segment分段(分片数据实际存储空间)
Docment文档(等同于mysql一行数据)
Field字段(等同mysql数据列)
Term词项
别名Alias:默认同索引名,是索引之上又一虚拟的索引空间,类似于代理(别名的用途:索引重建之后快速切换,应用无感知)

ElasticSearch核心算法:
Inverted Index倒排索引
Doc Value列式存储(elasticsearch数据排序/聚合统计)
FST有限状态转换 Finite State Transducers 前缀/后缀
skip List
BKD_Tree多维空间树(简单数值、范围数值)
RoaringBitmap压缩位图(原始数值压缩、查询结果合并)(最大支持范围2的32次方,约40亿)
TF/TF-IDF/BM25
Raft选主算法

es中索引类似于关系型数据库中表的角色
es索引创建规范:(维护管理便利)
业务类型:索引名+数字版本
日志类型:索引名+日期时间
索引创建:
动态创建:无需先创建索引,第一条数据创建即可创建索引
静态创建:先创建索引
滚动创建:
POST和PUT的区别
HTTP的其他几个动词GET、DELETE等就不详谈了,这里主要说下POST和PUT。

在操作时的区别如下:

POST /uri 创建
DELETE /uri/xxx 删除
PUT /uri/xxx 更新或创建
GET /uri/xxx 查看
POST不用加具体的id,它是作用在一个集合资源之上的(/uri),而PUT操作是作用在一个具体资源之上的(/uri/xxx)。
在ES中,如果不确定document的ID(documents具体含义见下),那么直接POST对应uri( “POST /website/blog” ),ES可以自己生成不会发生碰撞的UUID;
如果确定document的ID,比如 “PUT /website/blog/123”,那么执行创建或修改(修改时_version版本号提高1)
ES与DB的层级关系类比
ES:indices --> types --> documents --> fields
DB:databases --> tables --> rows --> columns

索引与分片与副本关系
1、索引分片数量不超过节点数量
2、一个索引30个分片等同于30个1分片索引(同时查是一样的)
3、索引副本数量少于节点数量
4、副本数量可多可少
5、分片数据容量上限不超过50GB,建议20-40GB
6、单分片不超过2的32次方(21亿条)
数据模型设计原则
简单模型原则:尽量平铺,对象深度建议不超过2级
最细粒度原则:指对象嵌套,上层数据冗余处理(例如商品多sku,按sku设计)
多索引原则:第一索引尽量满足单一业务场景,不同业务场景索引即时数据模型相似也要分开
打宽表索引原则:特殊场景合并多个表时,尽量全部合并在一起,es不支持join,大宽边可解决查询问题

相关文章

网友评论

      本文标题:Elasticsearch基础

      本文链接:https://www.haomeiwen.com/subject/kbesjktx.html