es 创建动态索引(二)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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索引开启压缩参数

ElasticSearch_01_ES的引入

ElasticSearch_01_ES的引入

ElasticSearch_01_ES的引入