一、单个大索引的缺陷

如果每天亿万+的实时增量数据呢,基于以下几点原因,单个索引是无法满足要求的;

1、存储大小限制维度

单个分片(Shard)实际是 Lucene 的索引,单分片能存储的最大文档数是:2,147,483,519 (= Integer.MAX_VALUE - 128)。如下命令能查看全部索引的分隔分片的文档大小:

GET _cat/shards
app_index 2 p STARTED 9443 2.8mb 127.0.0.1 Hk9wFwU
app_index 2 r UNASSIGNED
app_index 3 p STARTED 9462 2.7mb 127.0.0.1 Hk9wFwU
app_index 3 r UNASSIGNED
app_index 4 p STARTED 9520 3.5mb 127.0.0.1 Hk9wFwU
app_index 4 r UNASSIGNED
app_index 1 p STARTED 9453 2.4mb 127.0.0.1 Hk9wFwU
app_index 1 r UNASSIGNED
app_index 0 p STARTED 9365 2.3mb 127.0.0.1 Hk9wFwU
app_index 0 r UNASSIGNED

2、性能维度

当然一个索引很大的话,数据写入和查询性能都会变差,而高效检索体现在:基于日期的检索可以直接检索对应日期的索引,无形中缩减了很大的数据规模。

比如检索:“2019-02-01”号的数据,之前的检索会是在一个月甚至更大体量的索引中进行,现在直接检索"index_2019-02-01"的索引,效率提升好几倍。

3、风险维度

一旦一个大索引出现故障,相关的数据都会受到影响。而分成滚动索引的话,相当于做了物理隔离。

二、具体实现

综上,结合实践经验,大索引设计建议:使用模板+Rollover+Curator动态创建索引。动态索引使用效果如下:

index_2019-01-01-000001
index_2019-01-02-000002
index_2019-01-03-000003
index_2019-01-04-000004
index_2019-01-05-000005

1、使用模板统一配置索引;

2、使用 Rollver 增量管理索引;

目的:按照日期、文档数、文档存储大小三个维度进行更新索引。使用举例:

POST /logs_write/_rollover
{
"conditions": {
"max_age": "7d",
"max_docs": 1000,
"max_size": "5gb"
}
}

3、索引增量更新

1.索引更新的时机是:当原始索引满足设置条件的三个中的一个的时候,就会更新为新的索引。为保证业务的全索引检索,一般采用别名机制;

2.在索引模板设计阶段,模板定义一个全局别名:用途是全局检索,如图所示的别名:indexall。每次更新到新的索引后,新索引指向一个用于实时新数据写入的别名,如图所示的别名:indexlatest。同时将旧索引的别名 index_latest 移除。

别名删除和新增操作举例:

POST /_aliases
{
"actions" : [
{ "remove" : { "index" : "index_2019-01-01-000001", "alias" : "index_latest" } },
{ "add" : { "index" : "index_2019-01-02-000002", "alias" : "index_latest" } }
]
}

最新文章

  1. ecshop 后台-》广告
  2. Web API 身份验证 不记名令牌验证 Bearer Token Authentication
  3. Mac下关于——你不能拷贝项目“”,因为它的名称太长或包括的字符在目的宗卷上无效。文件的删除
  4. Python学习教程(learning Python)--3.3.4 Python的if-elif-else语句
  5. 国内Jquery CDN
  6. 【转载】Spring加载resource时classpath*:与classpath:的区别
  7. DML、DDL、DCL区别
  8. [反汇编练习] 160个CrackMe之018
  9. 【解决】WordPress FTP连接服务器时出错,请检查设置,WordPress需要访问您网页服务器的权限
  10. nuget挂了吗?
  11. asp.net mvc session锁问题
  12. 处理csv和json数据
  13. 大型Vuex应用程序的目录结构
  14. Vue2.x源码学习笔记-源码目录结构整理
  15. L259
  16. poj2912(带权并查集+枚举)
  17. vue2.0细节剖析
  18. syslog系统日志、Windows事件日志监控
  19. 安装Zookeeper和kafka,安装完毕后,遇到的错误
  20. vsftp小记

热门文章

  1. Codeforces Round #563 (Div. 2) 划水记
  2. jQuery ajax中的dataType——JSON和JSONP
  3. Mac 终端实现快速定位命令 自动补全目录
  4. docker可视化工具
  5. QMessageBox按钮自定义文字
  6. sftp安装(linux)
  7. 吴裕雄--天生自然 PYTHON3开发学习:网络编程
  8. ansible批量部署(一)
  9. 广义线性模型|logistics|Odds ratio|最大似然函数|LR|AIC|
  10. EMD——EEMD——CEEMD语音增强算法基础