你不会是程序猿吧?

关于非日志型索引的管理有什么好的推荐方案?

Elasticsearch | 作者 wssmao | 发布于2018年12月23日 | 阅读数:2357

关于非日志型索引的管理有什么好的推荐方案?
背景:
业务刚开始,每天写入的量在200w左右,当前是3节点集群,默认的5分片1副本。每个节点磁盘容量是500GB,配置了32GB内存。
但是后续会存在,每天写入的量不断增长,可能会达到每天千万或者亿级。
当前数据全部是写入一个索引中,这样导致后续shard大小太大,最后影响索引写入和查询。
 
看了一下,日志型索引一般是按时间单位,写入不同的索引。
疑问:
1、对于非日志型的业务,也是推荐采用按时间写入不同索引吗?还是有更好的方案?
2、当前集群分片已经设置了5个,如果后续扩容节点超过5个时,分片一旦设置数量又不能更改,需要如何处理?是新建新索引吗?
 
已邀请:

rochy - rochy_he

赞同来自: wssmao

1. 可以按照时间来建立,这个还是依赖具体业务和数据量而定,不过根据时间来建立索引是不错的选择;
2. ES 有一个 Rollover  功能,可以将你目前索引的数据自动迁移(日期、大小、文档数三种条件任选)到其他索引,可以看下面的例子:
PUT /logs-000001 
{
"aliases": {
"logs_write": {}
}
}

# Add > 1000 documents to logs-000001

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

fanmo3yuan

赞同来自:

对于业务数据来说如果担心索引过大,可以找一个维度去做业务拆分,比如uid或者cityid,按照uid或cityid将数据分配到不同索引里,这样也保证了单索引的大小,也方便与日后进一步拆分。
其实日志数据建议按照时间来拆分只是因为时序数据天然可以按照时间这个维度去拆,本质上是相同的。

要回复问题请先登录注册