ES创建索引


直接生成索引
@Document(indexName = “aa_1", type = “aa_1”, createIndex = false)
public class AcesRelation{
    @Id
    private String id;
    @Field(type = FieldType.Keyword)
    private String appName;
    @Field(type = FieldType.Date, format = DateFormat.custom,pattern = "yyyy-MM-dd HH:mm:ss")
    private String startTime;
}


按月生成索引

@Data
@Document(indexName = "#{indexGenerator.getIndexName(‘aa_’)}”, type = "#{indexGenerator.getIndexName('aa_')}")
public final class EsAcesApp {
    @Id
    private String id;
     @Field(type = FieldType.Text)
    private String department;
    @Field(type = FieldType.Keyword)
    private String app;
    @Field(type = FieldType.Date, format = DateFormat.custom,pattern = "yyyy-MM-dd HH:mm:ss")
    private String startTime;

}


@Slf4j
@Component
public class IndexGenerator {

    private LocalDate indexSuffix;

    private final boolean indexSharding;

    public IndexGenerator(AppConfigProperties properties) {
        this.indexSharding = properties.isIndexSharding();
    }

    public String getIndexName(String prefix) {
        if(!indexSharding) {
            return prefix + "1";
        }
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy_MM");
        String suffix = formatter.format(indexSuffix == null ? LocalDateTime.now() : indexSuffix);
        return prefix + suffix;
    }


 
    public void setIndexSuffix(LocalDate indexSuffix) {
        this.indexSuffix = indexSuffix;
    }
}

创建索引
public void createAll(LocalDate localDate) {
    try {
        indexGenerator.setIndexSuffix(localDate);
        for (Class<?> clazz : clazzList) {
            if(!elasticsearchRestTemplate.indexExists(clazz)){
                String indexName = elasticsearchRestTemplate.getPersistentEntityFor(clazz).getIndexName();
                elasticsearchRestTemplate.createIndex(clazz);
                elasticsearchRestTemplate.putMapping(clazz);
                log.info("Index {} created !", indexName);
            }
        }
    } finally {
        indexGenerator.setIndexSuffix(null);
    }
}



删除索引

private void delete(String prefix) {
    
        try {
            String indexName = indexGenerator.getIndexName(prefix, i);
            GetIndexRequest getIndexRequest = new GetIndexRequest().indices(indexName);
            boolean exists = restHighLevelClient.indices().exists(getIndexRequest, RequestOptions.DEFAULT);
            if(exists) {
                log.info("Delete index {} ...", indexName);
                DeleteIndexRequest request = new DeleteIndexRequest(indexName);
                restHighLevelClient.indices().deleteAsync(request, RequestOptions.DEFAULT,
                        ActionListener.wrap(onResponse(), onFail()));
            }
        } catch (IOException e) {
            log.error("Get index error", e);
        }
    
}



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值