专栏首页用户7614879的专栏Java 使用Spring-data-elasticsearch 为索引添加别名 修改及替换别名

Java 使用Spring-data-elasticsearch 为索引添加别名 修改及替换别名

一直感觉spring-data-es封装的很迷..调用起来奇奇怪怪 还是封装一层方便自己调用吧


@Component
public class EsUtil {


    private static ElasticsearchRestTemplate elasticsearchRestTemplate;

    @Autowired
    public EsUtil(ElasticsearchRestTemplate elasticsearchRestTemplate) {
        EsUtil.elasticsearchRestTemplate = elasticsearchRestTemplate;
    }


    /**
     * 获取索引对应的别名
     */
    public static Set<String> getAlias(String index) {
        Preconditions.checkNotNull(index);
        final IndexOperations indexOps = elasticsearchRestTemplate.indexOps(IndexCoordinates.of(index));
        final Map<String, Set<AliasData>> aliases = indexOps.getAliasesForIndex(index);
        final Set<AliasData> dataSet = aliases.get(index);
        Set<String> set = new HashSet<>(dataSet.size());
        dataSet.forEach(aliasData -> set.add(aliasData.getAlias()));
        return set;
    }

    /**
     * 为索引添加别名
     *
     * @param index 真实索引
     * @param alias 别名
     */
    public static boolean addAlias(String index, String... alias) {
        Preconditions.checkNotNull(index);
        Preconditions.checkNotNull(alias);
        final IndexOperations indexOps = elasticsearchRestTemplate.indexOps(IndexCoordinates.of(index));
        AliasActions aliasActions = new AliasActions(new AliasAction.Add(
                AliasActionParameters.builder().withIndices(index).withAliases(alias).build()
        ));
        return indexOps.alias(aliasActions);
    }


    /**
     * 为索引删除
     *
     * @param index 真实索引
     * @param alias 别名
     */
    public static boolean delAlias(String index, String... alias) {
        Preconditions.checkNotNull(index);
        Preconditions.checkNotNull(alias);
        final IndexOperations indexOps = elasticsearchRestTemplate.indexOps(IndexCoordinates.of(index));
        AliasActions aliasActions = new AliasActions(new AliasAction.Remove(
                AliasActionParameters.builder().withIndices(index).withAliases(alias).build()
        ));
        return indexOps.alias(aliasActions);
    }


    /**
     * 为索引更换别名 旧的换为新的 不会判断旧的是否存在
     *
     * @param index    真实索引
     * @param oldAlias 要删除的别名
     * @param newAlias 要新增的别名
     */
    public static boolean replaceAlias(String index, String oldAlias, String newAlias) {
        Preconditions.checkNotNull(index);
        Preconditions.checkNotNull(oldAlias);
        Preconditions.checkNotNull(newAlias);
        final IndexOperations indexOps = elasticsearchRestTemplate.indexOps(IndexCoordinates.of(index));
        final AliasAction.Add add = new AliasAction.Add(AliasActionParameters.builder().withIndices(index).withAliases(newAlias).build());
        final AliasAction.Remove remove = new AliasAction.Remove(AliasActionParameters.builder().withIndices(index).withAliases(oldAlias).build());
        AliasActions aliasActions = new AliasActions(add, remove);
        return indexOps.alias(aliasActions);
    }
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【SpringBoot2.0系列11】SpringBoot之@Elasticsearch完成CURD

    【SpringBoot系列02】SpringBoot之使用Thymeleaf视图模板

    yukong
  • SpringBoot-Elasticsearch

    下载一个elasticsearch,这里我们准备的是elasticsearch-6.4.3.tar.gz

    是小张啊喂
  • 高级框架-SpringBoot【悟空教程】

    Spring 诞生时是 Java 企业版(Java Enterprise Edition,JEE,也称 J2EE)的轻量级代替品。无需开发重量级的 Enterp...

    Java帮帮
  • SpringBoot一些很实用的功能

    然后这个图案是可以自定义的,在src/main/resource下新建一个banner.txt文件,然后去http://patorjk.com/software...

    lyb-geek
  • Spring Boot 集成 ElasticSearch,实现高性能搜索

    Elasticsearch 是java开发的,基于 Lucene 的搜索引擎。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful Web接口。Ela...

    用户7676729
  • 1 springboot整合elasticsearch入门例子

    在mac上很简单,brew install elasticsearch。安装完成后启动,brew services start ElasticSearch就可以...

    天涯泪小武
  • Spring Boot系列 – 2. Spring Boot提供的特性

    本文主要按以下模块介绍spring Boot(1.4.2.RELEASE)提供的特性。

    Java架构师必看
  • Spring全家桶之SpringData——SpringDataElasticSearch

    使用 Spring Data 下二级子项目 Spring Data Elasticsearch 进行操作。 支持 POJO 方 法操作 Elasticsear...

    时间静止不是简史
  • ElasticSearch6.5白金版本从构建ELK、集群搭建到和Mybatis结合操作详细讲解

    还有一种可能是当磁盘的使用率超过95%时,Elasticsearch为了防止节点耗尽磁盘空间,自动将索引设置为只读模式。

    Dream城堡
  • Spring Boot 2.x(十七):Elastic search快速入门

    Elasticsearch是一个基于Lucene的搜索服务器,Elasticsearch也是使用Java编写的,它的内部使用Lucene做索引与搜索,但是它的目...

    山禾说
  • Spring Boot 2.x:Elastic search快速入门

    Elasticsearch是一个基于Lucene的搜索服务器,Elasticsearch也是使用Java编写的,它的内部使用Lucene做索引与搜索,但是它的目...

    JAVA葵花宝典
  • Spring Boot 使用 Log4j2 & Logback 输出日志到 EKL

    注意:本次主要演示如何在 Spring-Boot 项目中配置 Log4j2 以及 Logback 输出日志到 ELK 中,并能够在 Kibana 中可以正确检索...

    哎_小羊
  • JavaWeb项目架构之Elasticsearch日志处理系统

    Elasticsearch (ES)是一个基于 Lucene 的开源搜索引擎,它不但稳定、可靠、快速,而且也具有良好的水平扩展能力,是专门为分布式环境设计的。

    小柒2012
  • 快速学习ES6-Spring Data Elasticsearch

    而是学习Spring提供的套件:Spring Data Elasticsearch。

    cwl_java
  • JavaWeb项目架构之Elasticsearch日志处理系统

    Elasticsearch (ES)是一个基于 Lucene 的开源搜索引擎,它不但稳定、可靠、快速,而且也具有良好的水平扩展能力,是专门为分布式环境设计的。 ...

    小柒2012
  • JavaWeb项目架构之Elasticsearch日志处理系统

    Elasticsearch (ES)是一个基于 Lucene 的开源搜索引擎,它不但稳定、可靠、快速,而且也具有良好的水平扩展能力,是专门为分布式环境设计的。

    小柒2012
  • 【全文检索_08】Spring Data Elasticsearch

      Spring Data Elasticsearch 是 Spring Data 项目的一部分,该项目旨在为新数据存储提供熟悉且一致的基于 Spring 的编...

    Demo_Null
  • 应用接入ES(一)-Springboot集成ES

    Elasticsearch 是一个分布式的开源搜索和分析引擎,适用于所有类型的数据,包括文本、数字、地理空间、结构化和非结构化数据。Elasticsearch ...

    叔牙
  • springboot实战之nosql整合(elasticsearch7.3版本)

    在正文之前,我先感慨下,elasticsearch版本更新实在是太快了。2019年4月时候,我看到的版本还是7.0版本,现在9月,已经出到了7.3版本了,而且7...

    lyb-geek

扫码关注云+社区

领取腾讯云代金券