当前位置:   article > 正文

ES简单教程(五)使用ElasticsearchRestTemplate手动生成ES索引 项目启动自动生成ES索引_elasticsearchresttemplate 创建索引

elasticsearchresttemplate 创建索引

其实使用SpringBoot项目玩ES的时候,人家本身是提供了一个注解@Docment是可以自动在项目启动的时候创建ES索引的!
只不过没用,因为ES的版本在升级,ElasticsearchRestTemplate配套的脚手架也在升级,所以你会在网上遇到一个情况:搜到的各类解决方案可能都太适配你的情况,搜到个方法吧,逻辑OK,但是拿进来项目里边一用,方法过时了,扑街了,囧~

本身项目启动时自动创建ES索引的方式有两种

1、使用自带注解@Docment(不推荐)

当你兴致勃勃的想着简单使用这个注解躺平时,你发现这TMD压根不起作用,还不能自定义修改settings.

2、项目启动时自定义创建

package com.test;

/**
 * ES初始化创建索引
 */
@Component
@Order(value = 1)
@Slf4j
public class CreateESIndexConfig implements CommandLineRunner {

    @Autowired
    private ElasticsearchRestTemplate elasticsearchRestTemplate;

	//json文件存储路径为:src/main/resources/es-settings/es_settings.json
    @Value("classpath:es-settings/es_settings.json")
    private Resource esSetting;

    /**
     * 项目启动的时候,如果elasticsearch已经存有索引,则不做任何操作,如果没有索引,则新建索引
     * @param args
     * @throws Exception
     */
    @Override
    public void run(String... args) throws Exception {
        log.info("[ES]开始创建索引{}...", "test_index");
		
		//读取json文件内的字符内容
        String esSettingStr = IOUtils.toString(esSetting.getInputStream(), Charset.forName("utf-8"));
        //将json数据转为Map 因为下面indexOps.create的方法是需要传入Map(settings)和Docment(mapping)
        Map<String, Object> settings = JSONObject.parseObject(esSettingStr).getInnerMap();
        IndexOperations indexOps =
                elasticsearchRestTemplate.indexOps(IndexCoordinates.of("test_index"));
        if(indexOps.exists()==false){
            indexOps.create(settings, indexOps.createMapping(TestIndex.class));
            log.info("[ES]创建索引{}完成.", "test_index");
        }else{
            log.info("[ES]索引{}已存在.", "test_index");
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/518849
推荐阅读
相关标签
  

闽ICP备14008679号