ES5.x 的新特征——rollover

本贴最后更新于 2791 天前,其中的信息可能已经时移世改

背景

使用 ES 来存储日志型的数据时,需要定期归档日志,否则索引会过大导致无法接受新日志和查询速度过慢。

在 5.x 中,提供了一个 rollover 的 API,可以按照时间和日志量来归档日志。

入门示例

建立新索引

curl -H 'Content-Type: application/json' -XPUT "localhost:9200/logs-000001?pretty" -d ' { "aliases": { "logs_write": {} } } '

插入 1500 条数据

for (( i=1; i<=1500; i++ )) do echo $i curl -H 'Content-Type: application/json' -XPOST "localhost:9200/logs_write/tweet?pretty" -d ' { "user" : "abeffect-'${i}'", "post_date" : "2017-08-13T23:27:25", "message" : "from abeffect by flowaters" } ' done

插入的途中,执行归档指令 (下面中 logs 和 write 中有下划线,同时 rollover 前也有个下划线,Markdown 的排版比较难)

curl -H 'Content-Type: application/json' -XPOST "localhost:9200/logs_write/_rollover?pretty" -d ' { "conditions": { "max_age": "7d", "max_docs": 1000 } } '

查看索引

curl -s "localhost:9200/_cat/indices" | grep logs green open logs-000002 sa2QImSERD2DHC-zQLLaeA 5 1 199 0 261.5kb 168.1kb green open logs-000001 zFYr8Wf8SeexqxAphgzDAw 5 1 1301 0 541.7kb 260.1kb

可以看到索引自动切分成了两个索引

如上面示例,ES 可以自动识别*-加六个数字结尾*的索引,如 logs-000001 结尾的。

如果索引名称不符合以规则,又想用此功能。那么接着看。

自定义索引名称

在执行归纳指令的途中,通过参数来指定新索引的名称,如

curl -H 'Content-Type: application/json' -XPOST "localhost:9200/logs_write/_rollover/logs_20170813?pretty" -d' { "conditions": { "max_age": "7d", "max_docs": 300 } } '

其它特征

ES 的 rollover 还支持其它特征如下,详细内容请点击官方文档

  1. 通过 date math 来指令归档的名称为日期相关内容
  2. 定义新索引的 settings
  3. 在真实跑之前,先 Dry run 一下
  4. 创建新索引后,是不是要 wait_for_active_shards
  • Elasticsearch

    Elasticsearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful 接口。Elasticsearch 是用 Java 开发的,并作为 Apache 许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

    117 引用 • 99 回帖 • 207 关注
  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3195 引用 • 8215 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...