2.生产环境自动创建es并为其添加别名
生产环境自动创建es并为其添加别名
·
一、先上代码
@PostConstruct
public void createTemporaryIndex() {
String CONFIG = "es.mapper/grayscale.xml";
ClientInterface clientUtil = bbossESStarter.getConfigRestClient(CONFIG);
String mapping = clientUtil.getIndice(EsConstant.ES_GRAYSCALE_LOG_INDEX.getText());
if (StringUtils.isEmpty(mapping)) {
clientUtil.createIndiceMapping(EsConstant.ES_GRAYSCALE_LOG_INDEX.getText(),
"grayscaleMapping");
mapping = clientUtil.getIndice(EsConstant.ES_GRAYSCALE_LOG_INDEX_ALIAS.getText());
if (StringUtils.isEmpty(mapping)) {
//添加索引的别名
String s = clientUtil.addAlias(EsConstant.ES_GRAYSCALE_LOG_INDEX.getText(), EsConstant.ES_GRAYSCALE_LOG_INDEX_ALIAS.getText());
log.info("添加灰度索引别名:{}",s);
}
}
}
二、具体思路
大体思路就是在启动spring项目的时候,先判断es的索引存不存在,不存在创建改索引,然后判断别名存不存在,不存在创建别名。
@PostConstruct
该注解是spring初始化的时候会执行带注解的方法,可以理解为你启动项目就会执行
String CONFIG = "es.mapper/grayscale.xml";
你的创建es索引的具体结构
<property name="grayscaleMapping">
<![CDATA[
{
"settings": {
"analysis": {
"analyzer": {
"ngram_analyzer": {
"filter": [
"lowercase"
],
"tokenizer": "ngram_tokenizer"
}
},
"tokenizer": {
"ngram_tokenizer": {
"token_chars": [
"letter",
"digit"
],
"min_gram": "1",
"type": "ngram",
"max_gram": "1"
}
}
}
},
"mappings": {
"_doc": {
"properties": {
"context": {
"type": "text",
"analyzer": "ngram_analyzer"
},
"operationName": {
"type": "text",
"analyzer": "ngram_analyzer"
},
"createTime": {
"type": "long"
},
"operationCrmid": {
"type": "keyword"
},
"logType": {
"type": "long"
}
}
}
}
}
]]>
</property>
String mapping = clientUtil.getIndice(EsConstant.ES_GRAYSCALE_LOG_INDEX.getText();
EsConstant.ES_GRAYSCALE_LOG_INDEX.getText()
是你的索引名称String类型,这个没直接用String,而是用的枚举获取的。
更多推荐
已为社区贡献4条内容
所有评论(0)