es 创建动态索引(一)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了es 创建动态索引(一)相关的知识,希望对你有一定的参考价值。

参考技术A es 实体类

索引的后缀是时间,精确到秒钟
测试方法,每隔一秒钟插入一条数据。

通过kibana 去查询结果

结果如下 发现的确创建了多个索引

参考地址
https://www.jianshu.com/p/0b603db1278f
https://www.dingdangss.com/2017/04/05/%E5%88%A9%E7%94%A8springAOP-%E8%87%AA%E5%AE%9A%E4%B9%89%E6%B3%A8%E8%A7%A3-SpEL%E5%AE%9E%E7%8E%B0%E6%93%8D%E4%BD%9C%E6%97%A5%E5%BF%97%E8%AE%B0%E5%BD%95/

es 创建动态索引(二)

参考技术A 上一篇文章
es 创建动态索引(一) ,通过el表达式 修改 @Document 里 indexName 值,实现 es 动态索引。
https://www.jianshu.com/p/5d170ce6777d

后来使用时候发现如果实体类上有注解@Field
例如

springboot 启动时候创建的mapping为:

而这种动态的方式为创建的mapping为:

不一样,所以就想看看 启动时候是怎么创建的。使用同样的方式创建就可以。

AbstractElasticsearchRepository.java 中,
构造函数初始时候会去判断要不要创建index和mapping
这个值在@Document中,默认值为true

如果要创建就调用 创建index 和 put mapping方法

而创建和映射是调用elasticsearchOperations 的方法实现的
而它的实现类 即是ElasticsearchTemplate
时序图如下:

所以我们可以在保存数据时候,判断索引是否存在,不存在创建和设置mapping

亲测 ok 了。

而之前的时间粒度为秒 来创建动态索引 太细了。
可能索引创建和mapping ok 了,但是保存时候 到了下一秒,es 自己就会去创建 。
所以为了测试 将时间细分到 分来测试。

测试结果如下,索引 和 mapping都没问题。

以上是关于es 创建动态索引(一)的主要内容,如果未能解决你的问题,请参考以下文章

ES 索引模板和动态模板

ES搜索引擎基本操作

es索引开启压缩参数

ELK专栏之ES索引-04

从 kafka-filebeat 创建动态索引

Elastic Stack:es 索引index入门