SpringBoot ES 重建 Mapping

Sprin

gBoot ES 重建 Mapping

  • 1 复制数据
  • 2 删除老索引
  • 3 重建索引
  • 4 复制回数据

1 复制数据

POST http://elastic:[email protected]:9200/_reindex
{
    "source": {
        "index": "老索引名称"
    },
    "dest": {
        "index": "备份索引名称"
    }
}

2 删除老索引

DELETE http://elastic:[email protected]:9200//aicc_spp_audio_800808618

3 重建索引

package org.jeecg.modules.mark.common.es.setting;

import lombok.Data;

/**
 * ElasticSearch 索引设置
 *
 * @date 2023年12月21日09点47分
 * @since V1.0.0.0
 */
@Data
public class ElasticSearchSetting {

    /**
     * 是指索引要做多少个分片,只能在创建索引时指定,后期无法修改。
     */
    private int number_of_shards = 3;

    /**
     * 每个分片有多少个副本,后期可以动态修改。
     */
    private int number_of_replicas = 1;

    /**
     * max_result_window 是分页返回的最大数值,默认值为10000。
     */
    private int max_result_window = 20000000;

}
@Test
void createIndex() {
    String indexName = "索引名称";
    IndexCoordinates index = IndexCoordinates.of(indexName);
    if (!restTemplate.indexOps(index).exists()) {
        final Document mapping = restTemplate.indexOps(index).createMapping(AudioMarkInfo.class);
        mapping.put("date_detection", false);
        mapping.put("numeric_detection", false);
        final Document parse = Document.parse(JSONUtil.toJsonStr(new ElasticSearchSetting()));
        restTemplate.indexOps(index).create(parse);
        restTemplate.indexOps(index).putMapping(mapping);
        log.info("ES索引{}不存在,创建ES索引完成!", index.getIndexName());
    }
}

4 复制回数据

POST http://elastic:[email protected]:9200/_reindex
{
    "source": {
        "index": "备份索引名称"
    },
    "dest": {
        "index": "新索引名称"
    }
}