ElasticSearch创建动态索引
ElasticSearch创建动态索引
需求:某实例需要按照月份来维护,所以之前的“写死”索引的方式当然不行了。通过百度和看SpringDataElasticSearch官方文档,最后解决了这个问题。
关键技术点: Spel表达式 (通过调用方法来获取新的索引名,方法内处理新索引名的生成逻辑)
实体类部分代码:
从表达式中可以看出:esConfig 是一个bean,调用了getXX方法。
@Document(indexName = "#{esConfig.getApiCallIndexName()}")
public class ApiCallRecord {
/**
* 平台流水号
*/
@Id
@Field(type = FieldType.Keyword)
private String transId;
。。。。。。
}
动态索引Bean代码:
将改类注册成Bean,名称为“esConfig”,其中apiCallIndexNamePrefix,是索引的前缀(为了通用,让它从配置文件取,如果没有那么就设置默认值“api_call_rec_”),方法中的逻辑就是生成逻辑,这样就能够生成api_call_rec_yyyy_MM这样的索引了。
@Component(value = "esConfig")
public class ElasticSearchConfiguration { @Value("${esConfig.apiCallIndexName:api_call_rec_}")
private String apiCallIndexNamePrefix; public String getApiCallIndexName() {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy_MM");
return apiCallIndexNamePrefix + LocalDateTime.now().format(formatter);
} }
从Kibana中也能看到确实是生成了动态索引(我最开始是获取当前时间“秒”来测试的,每次处理逻辑后基本都会有新的索引创建。)

参考文档:Spring ES动态索引
该文档就源码级别分析动态索引能起作用的原因,推荐大家看看。非常感谢大佬的分享!
目前功能基本是实现了,后续还有很多可以新优化的吧。。。
ElasticSearch创建动态索引的更多相关文章
- 使用Elasticsearch的动态索引和索引优化
关于映射 实际工作中使用过ES的朋友可能会有和静儿一样的感受.ES存储更新从编码上是很方便.如下,Kubernetes的yaml文件完全可以通过json直接序列化一下,一行代码存入ES. 剩下的工作可 ...
- Elasticsearch创建索引和映射结构详解
前言 这篇文章详细介绍了如何创建索引和某个类型的映射. 下文中[address]指代elasticsearch服务器访问地址(http://localhost:9200). 1 创建索引 ...
- 使用logstash从Kafka中拉取数据并传输给elasticsearch且创建相应索引的操作
注意事项:默认Kafka传递给elastci的数据是在'data'字段,且不包含其他数据,所以需要使用额外的操作进行处理 logstash配置文件操作 input { kafka { bootstra ...
- Elasticsearch 之 数据索引
对于提供全文检索的工具来说,索引时一个关键的过程——只有通过索引操作,才能对数据进行分析存储.创建倒排索引,从而让使用者查询到相关的信息. 本篇就ES的数据索引操作相关的内容展开: 更多内容参考:El ...
- ES 12 - 配置使用Elasticsearch的动态映射 (dynamic mapping)
目录 1 动态映射(dynamic mapping) 1.1 什么是动态映射 1.2 体验动态映射 1.3 搜索结果不一致的原因分析 2 开启dynamic mapping策略 2.1 约束策略 2. ...
- Elasticsearch大规模时序索引如何治理和规划
什么是时序索引? 其主要特点体现在两个方面, 一存,以时间为轴,数据只有增加,没有变更,并且必须包含timestamp(日期时间,名称随意)字段,其作用和意义要大于数据的id字段,常见的数据比如我们通 ...
- elasticsearch document的索引过程分析
elasticsearch专栏:https://www.cnblogs.com/hello-shf/category/1550315.html 一.预备知识 1.1.索引不可变 看到这篇文章相信大家都 ...
- elasticsearch如何设计索引
本文为博客园作者所写: 一寸HUI,个人博客地址:https://www.cnblogs.com/zsql/ 最近在做es相关的工作,所以记录下自己的一些想法,可能很多方面不会很全面,但是基本都是经过 ...
- Ribbon2: 创建动态的Ribbon库
Sam Radakovitz曾在Excel团队博客中发表过一篇文章,介绍了如何创建动态的Ribbon库,即如何通过RibbonX和VBA放置动态的图形图像到功能区库中,在该文中,作者创建了两个库:一个 ...
随机推荐
- [webpack]webpack打包优化
1.import优化 a.tree-shaking 把没用到的代码删除掉,import 在生产环境下 会自动去除掉没用的代码 b.scope hosting 作用域提升,在webpack中会自动省略一 ...
- osg osgViewer::View::setUpViewInWindow()
void ViewerBase::frame(double simulationTime) { if (_done) return; // OSG_NOTICE<<std::endl< ...
- 5G && 物联网
可打电话的 2G.能够上网的 3G.满足移动互联网用户需求的 4G 相比,逐步可以商用的 5G 在多重性能上更胜一筹,如 高数据率: 低延迟: 更节能: 有效地降低通信成本: 具备更高的系统容量: 更 ...
- React之概述(待续)
原文链接 MDN上有关JavaScript的内容 箭头函数, 类, 模板字符串, let, const Babel REPL
- (九)会话跟踪技术之Cookie
--部分摘自孤傲苍狼博客~ 一.会话的概念 会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. 有状态会话:一个同学来过教室,下次再 ...
- C#关于DateTime得到的当前时间的格式和用法
DateTime.Now.ToShortTimeString() DateTime dt = DateTime.Now; dt.ToString();//2005-11-5 13:21:25 dt.T ...
- galera集群启动异常问题
WSREP: failed to open gcomm backend connection: 131: invalid UUID 进入该数据库节点/var/lib/mysql/目录,将文件gvwst ...
- 聊聊Docker理论知识(二)
目录 一.什么是Dcoker 二.Docker的三大核心概念 1.镜像(Image) 2.容器(Container) 3.仓库(Repository) 三.Docker架构组成 四.Docker的技术 ...
- WordPress获取特色图像的链接地址
为什么要获取WordPress的特色图像呢? 这主要是因为,我们已经写好了静态模板文件,只有获取WordPress特色图像地址插入进去就可以了,非常方便. 还有就是有的时候,我们需要设置图片的宽度为1 ...
- cadence 16.3 安装教程
http://wenku.baidu.com/link?url=mGICX2QxuxVcYGNEaOIUOK1t0LQFN4m8cp_bJF0XmvZp0TLn8OoMxjmXa-8mTa0_V0YV ...