使用索引别名和Rollover滚动创建索引
使用索引别名和Rollover滚动创建索引
在ElasticSearch6.3.2 集群做节点冷(warm) 热(hot) 分离中,实现了ElasticSearch集群节点的冷热分离,新创建的索引只允许分配到hot节点上,而随着时间推移,旧的历史索引数据需要迁移到warm节点上。因此,ES索引上存储的数据一般是按时间划分的:比如每个月自动生成一个索引,用来存储这个月生产的所有数据。为了更方便地管理按时间生成的索引,可采用索引模板并结合ES的Rollover功能来方便地管理索引。
先创建索引模板,索引模板里面定义的索引别名是不能用于rollover的。因为,索引模板里面的索引别名一般会指向多个"物理"索引。具体可参考:rollover-failing。指向多个"物理"索引的索引别名不能用来写数据。
PUT _template/pubchat
{
"index_patterns": "pubchat-*",
"settings": {
"index": {
"number_of_shards": "3",
"number_of_replicas": "1",
"routing": {
"allocation": {
"exclude": {
"box_type": "warm"
},
"require": {
"box_type": "hot"
}
}
}
}
},
"mappings": {
"_doc": {
"_source": {
"enabled": true
},
"properties": {
"uid": {
"type": "keyword"
},
"nick": {
"type": "keyword"
},
"chatTime": {
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss"
}
}
}
},
"aliases": {
"pubchat-search-alias": {}
}
}
索引别名 pubchat-search-alias 主要是为了用来搜索(读操作)。要注意区分2类索引别名:一种是write index,另一种是read index,具体可参考 ES Index Alias 官方文档。
创建新索引,自动命中索引模板,并为索引pubchat-202001创建一个专门用来搜索的别名:pubchat-search-alias
#创建一个索引
PUT pubchat-202001
指定一个专门 进行rollover(滚动写入) 的索引别名。索引别名 pubchat-write-alias 是为了数据写入使用
#为索引再指定一个只用来 rollover 的别名
POST _aliases
{
"actions": [
{
"add": {
"index": "pubchat-202001",
"alias": "pubchat-write-alias"
}
}
]
}
rollover别名pubchat-write-alias只需要在创建第一个索引时指定一次,后面pubchat-write-alias会自动滚动指向:pubchat-202002、pubchat-202003……
rollover 索引别名的主要作用是"滚动写入",因此rollover索引别名只能指向一个具体的索引。
An alias that points to one and only one index can be used to read and write data. An alias that points to more than one index is read-only.
关于索引别名的详细描述可参考官方文档:Write Index
为索引指定滚动策略。这里为了测试方便,当一个索引中超过2篇文档时,就生成一个新索引。
# 指定rollover 的策略
POST /pubchat-write-alias/_rollover
{
"conditions": {
"max_docs": 2
}
}
由于是新创建的索引,里面没有数据,因此应该返回如下:
{
"acknowledged": false,
"shards_acknowledged": false,
"old_index": ""pubchat-202001",
"new_index": "pubchat-202002",
"rolled_over": false,
"dry_run": false,
"conditions": {
"[max_docs: 2]": false
}
}
最后,只需要向rollover索引别名 pubchat-write-alias 写数据即可,当满足rollover指定的策略时,会自动创建下一个新索引。
# 写一点测试数据进去
PUT pubchat-write-alias/_doc/1
{
"uid" : "111",
"nick" : "test"
}
值得注意的是:index.refresh_interval 参数会影响滚动策略准确性。比如max_docs设置成2,受refresh_interval 影响,索引中包含的文档数量是有可能大于2个的。
一个示例说明:
为了一个月生成一个索引(pubchat-yyyyMM),比如:pubchat-202001、pubchat-202002、pubchat-202003……
引入了Rollover之后,写数据只需要往 pubchat-write-alias 索引(别名)上写,当写入的数据触发 指定的 rollover 策略时,会自动生成新的索引(会去匹配已定义好的索引模板)
restHighLevelClient.bulkWrite("pubchat-write-alias");
若不采用Rollover,则需要自己在代码逻辑中写数据时,按月判断生成索引名称。
restHighLevelClient.bulkWrite("pubchat-202001");//1月份
restHighLevelClient.bulkWrite("pubchat-202002");//2月份
....
显然rollover简化了索引的管理。另,ES6.7版本引入了 Index LifeCycle Management,应该能更方便地管理索引了吧。
原文:https://www.cnblogs.com/hapjin/p/11386965.html
使用索引别名和Rollover滚动创建索引的更多相关文章
- SQL 创建索引的作用以及如何创建索引
SQL 创建索引的作用以及如何创建索引 SQL 创建索引的作用 一.使用索引的优点: 1.通过唯一性索引(unique)可确保数据的唯一性 2.加快数据的检索速度 3.加快表之间的连接 4.减少分组和 ...
- ElasticSearch(三十)基于scoll+bulk+索引别名实现零停机重建索引
1.为什么要重建索引? 总结,一个type下的mapping中的filed不能被修改,所以如果需要修改,则需要重建索引 2.怎么zero time重建索引? 一个field的设置是不能被修改的,如果要 ...
- Mysq索引优化(什么情况创建索引,什么情况不创建索引)
一.以下情况需要创建索引 1.主键自动建立唯一索引 2.频繁作为查询条件的字段应该创建索引 3.查询中与其他表关联的字段,外键关系建立索引 4.单键/组合索引的选择问题,组合索引性价比更高 5.查询中 ...
- ES 10 - Elasticsearch的索引别名和索引模板
目录 1 索引模板概述 1.1 什么是索引模板 1.2 索引模板中的内容 1.3 索引模板的用途 2 创建索引模板 3 查看索引模板 4 删除索引模板 5 模板的使用建议 5.1 一个index中不能 ...
- MongoDB性能篇之创建索引,组合索引,唯一索引,删除索引和explain执行计划
这篇文章主要介绍了MongoDB性能篇之创建索引,组合索引,唯一索引,删除索引和explain执行计划的相关资料,需要的朋友可以参考下 一.索引 MongoDB 提供了多样性的索引支持,索引信息被保存 ...
- Lucene.net 从创建索引到搜索的代码范例
关于Lucene.Net的介绍网上已经很多了在这里就不多介绍Lucene.Net主要分为建立索引,维护索引和搜索索引Field.Store的作用是通过全文检查就能返回对应的内容,而不必再通过id去DB ...
- lucene简介 创建索引和搜索初步
lucene简介 创建索引和搜索初步 一.什么是Lucene? Lucene最初是由Doug Cutting开发的,2000年3月,发布第一个版本,是一个全文检索引擎的架构,提供了完整的查询引擎和索引 ...
- lucene全文搜索之二:创建索引器(创建IKAnalyzer分词器和索引目录管理)基于lucene5.5.3
前言: lucene全文搜索之一中讲解了lucene开发搜索服务的基本结构,本章将会讲解如何创建索引器.管理索引目录和中文分词器的使用. 包括标准分词器,IKAnalyzer分词器以及两种索引目录的创 ...
- MySql 创建索引原则
https://blog.csdn.net/csdnones/article/details/50412603 为了使索引的使用效率更高,在创建索引时,必须考虑在哪些字段上创建索引和创建什么类型的索引 ...
随机推荐
- Flask--闪现、中间件、多app应用
目录 闪现 源码 案例 中间件 自定义局部中间件 自定义全局装饰器 多app应用 闪现 flask提供了一个非常有用的flash()函数,它可以用来"闪现"需要提示给用户的消息,比 ...
- Java异常相关知识总结
异常: 概述:java程序运行过程中出现的错误 常见的异常: StackOverflowError ArrayIndexOutOfBoundsException NullPointerExceptio ...
- 微信小程序滚动tab的实现
微信小程序滚动tab的实现 1.目的:为了解决滚动版本的tab,以及实现虹吸效果. 2.方案:自己动手写了一个Demo,用于测试实现如上的效果.其代码有做参考,在这里先声明.具体的参照如下:重庆大学二 ...
- eclipse 导出 jar包详细步骤
如图所示:
- X264-视频帧的存取
X264的编码器结构体x264_t中的子结构体字段frames包含了4个临时视频帧序列空间:current.next.unused和reference,分别保存当前编码帧.将编码帧序列.未处理原始视频 ...
- 7.InfluxDB-InfluxQL基础语法教程--INTO子句
本文翻译自官网,官网地址:(https://docs.influxdata.com/influxdb/v1.7/query_language/data_exploration/) 通过INTO子句,可 ...
- SpringBoot 整合Mybatis操作数据库
1.引入依赖: <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId> ...
- Linux CentOS 防止SSH暴力破解
一. 问题的发现 昨晚苦逼加班完后,今早上班继续干活时,SSH连接服务器发现异常的提示,仔细看了一下吓一小跳,昨晚9点钟到现在,一夜之间被人尝试连接200+,慌~~~ 1. 速度查一下log [roo ...
- CSS的四种基本选择器和四种高级选择器
做个快乐的搬运工:https://blog.csdn.net/DYD850804/article/details/80997251
- CF704D Captain America(上下界网络流)
传送门 题意: 二维平面给出\(n\)个点,现在可以给每个点进行染色,染红色的代价为\(r\),染蓝色的代价为\(b\). 之后会有\(m\)个限制,形式如:\(t_i\ l_i\ d_i\),当\( ...