zoukankan      html  css  js  c++  java
  • ElasticSearch创建动态索引

    转载自:https://www.cnblogs.com/deepSleeping/p/11976262.html

    需求:某实例需要按照月份来维护,所以之前的“写死”索引的方式当然不行了。通过百度和看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);
        }
    
    
    }
     
    复制代码

    动态 生成索引的源码分析:

    https://www.jianshu.com/p/0b603db1278f

  • 相关阅读:
    git指令-撤销修改
    git指令-管理修改
    jquery高级
    jquery
    sql的练习题
    git指令-工作区和暂存区
    java-多线程安全-锁
    oracle习题-emp表查询练习
    java-异常进阶-包的使用
    oracle-函数总结
  • 原文地址:https://www.cnblogs.com/it-deepinmind/p/14448991.html
Copyright © 2011-2022 走看看