因业务需要,要在项目启动时确认ES的一个template是否被初始化,现记录下方法:
private static void initTmplt() {
try{
GetIndexTemplatesRequest getIndexTemplatesRequest = new GetIndexTemplatesRequest();
getIndexTemplatesRequest.names("base-mapping.tpl");
GetIndexTemplatesResponse getIndexTemplatesResponse = client.admin().indices().getTemplates(getIndexTemplatesRequest).actionGet();
List<IndexTemplateMetaData> indexTemplates = getIndexTemplatesResponse.getIndexTemplates();
if(CollectionUtils.isEmpty(indexTemplates)){
log.info("模板未初始化,执行新的初始化操作");
PutIndexTemplateRequest putIndexTemplateRequest = new PutIndexTemplateRequest();
putIndexTemplateRequest.name("base-mapping.tpl");
String s = getFileContent("/mapping/base-mapping.json");
if(StringUtil.isEmpty(s)){
log.error("读取mapping内容失败");
return;
}
Map<String, Object> map = (Map<String, Object>)JsonUtil.convertJson2Object(s, Map.class);
putIndexTemplateRequest.settings((Map<String, Object>)map.get("settings"));
putIndexTemplateRequest.patterns((List<String>)map.get("index_patterns"));
putIndexTemplateRequest.version((Integer) map.get("version"));
Map<String, Map<String, Object>> mappings = (Map<String, Map<String, Object>>)map.get("mappings");
for(Map.Entry<String, Map<String, Object>> entry : mappings.entrySet()){
putIndexTemplateRequest.mapping(entry.getKey(), entry.getValue());
}
client.admin().indices().putTemplate(putIndexTemplateRequest);
}
}catch (Exception e){
log.error("初始化模板失敗", e);
}
}