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 创建动态索引(一)的主要内容,如果未能解决你的问题,请参考以下文章