赞
踩
索引(Index)是个虚拟表空间,类型数据库中的table,
一个索引由至少1个分片组成,
一个索引由可以由主分片与福分片组成。
索引是虚拟表空间,索引别名则是在索引之上又一层虚拟的索引空间。
索引别名默认等同于索引名称
用途:
索引重建之后快速切换,应用无感知。
命名规范建议:
业务类型:索引名+数字版本
如:article_001,video_001
日志类型:索引名+日期时间
如:system-log-2022.05.01
应用意义:
数据隔离
查询便利
模糊匹配
精确指定索引
动态创建
索引无需提前创建,第一条数据插入即可常见完成。
应用场景:非严格数据模型限制的场景,如日志、监控。
索引模板:通常采用索引模板固定下来。
可限制自动机制:限制索引名称、限制索引自动创建。
POST /edu_001/_doc
{
"name": "zhangsan"
}
依据客观背景提前创建索引,提前做好索引数据分布与相应设置
应用场景:
业务系统数据需要严格规范
索引分布在极端情况下需要消耗集群资源,避免集中创建索引时,集群响应慢。
PUT index-002
{
}
利用了别名alias
利用rollover特性
自动化滚动创建,达到一定阈值创建。
应用场景:
日志领域,需要自动化依据触发条件滚动创建。
大数据领域,单索引能力局限需要创建很多。
// 创建索引并带索引
PUT index-03
{
"aliases": {"index-03-alias": {}}
}
// 获取meta元数据信息,包括别名
GET index-03
//也可以用:
GET index-03-alias
// 绑定别名
PUT index-03/_alias/index03-alias1
// 别名跟索引是多对多的关系。
1、索引命名规范,必须符合自动增长模式
2、建议后缀是标准数字
3、索引名称中不要有特殊符号
# 语法1
POST /<rollover-target>/_rollover/<target-index>
# 语法2
POST /<rollover-target>/_rollover/
# 案例1:滚动创建跟别名有关系
# 指定别名
PUT index-rollover-index-000001
{
"aliases": {"index-rollover-index"}
}
# 查看别名
GET index-rollover-index
# 触发滚动
POST index-rollover-index/_rollover
1、索引最大文档书
2、索引创建时间
3、索引最大空间
# 设置触发条件 POST index-rollover-index/_rollover { "conditions": {"max_docs": 2} } # 增加数据,用来触发条件(记得刷新refresh) POST index-rollover-index-000001/_doc?refresh { "test": "abc" } # 也可以指定索引index-rollover-index-000006 POST index-rollover-index/_rollover/index-rollover-index-000006 { "conditions": {"max_docs": 2} } # dry_run模拟触发,不真正触发 POST index-rollover-index/_rollover?dry_run { "conditions": {"max_docs": 2, "max_age": "7d", "max_size": "5gb"} }
默认1,创建索引时需要指定,之后索引活动期间不可变,后期只能重建。
字段类型不可变,一旦指定几乎不可变,若要修改,则需要刷新所有历史数据,等同于索引重建。
# 创建索引,设置分片数3、副本数2、更新间隔1秒
PUT /index_04
{
"settings": {"number_of_shards": 3, "number_of_replicas": 2, "refresh_interval": "1s"}
}
索引副本数可以动态修改,默认1
索引有很多高级设置,可以动态修改。
文档模型:JSON类型
元数据:
_index 索引名
_type 类型
_id 唯一id
_version 版本
_seqno 序列号
_primary_term
其他
源数据:JSON结构化
简单、高效
应用场景:与数据表1-1对应,常规查询搜索
POST index/_doc
{
"test1": "abc",
"test2": "def"
}
适用复杂业务场景、复杂对象映射表达
常规数据记录
父子关系:join字段类型
键值对关系:nested字段类型
优点:表达能力
缺点:效率低、复杂、维护
应用场景:问答场景、上下文关系、键值对关系
能不用则不用
分片数量:索引分片数量不超过节点数量
1个索引40个分片等同于40个1分片1索引
副本数量:索引副本数量少于节点数量。副本数量可多可少。
数据容量:分片数据容量上限不超过50GB,建议30GB-50GB
数据条数:单分片不超过2^32-1(21亿条)
简单模型原则
能用平铺模型搞定,尽量平铺
对象深度建议不要超过3级
最细粒度原则
对象嵌套遵循最细粒度原则,上层数据冗余处理
多索引原则
单一索引尽量满足单一业务场景
不同业务场景索引即使数据模型相似也要分开
大宽表索引原则
特殊场景合并多个表时,尽量全部合并在一起
ES不支持Join,大宽表可解决查询问题
代码入口:
Bootstrap入口启动:Elasticsearch.main
Rest接口层:RestController.dispatchRequest
Action操作转换层:ActionRequest
Execute操作执行层
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。