直接生成索引
@Document(indexName = “aa_1", type = “aa_1”, createIndex = false)
public class AcesRelation{
@Id
private String id;
@Field(type = FieldType.Keyword)
private String appName;
@Field(type = FieldType.Date, format = DateFormat.custom,pattern = "yyyy-MM-dd HH:mm:ss")
private String startTime;
}
按月生成索引
@Data
@Document(indexName = "#{indexGenerator.getIndexName(‘aa_’)}”, type = "#{indexGenerator.getIndexName('aa_')}")
public final class EsAcesApp {
@Id
private String id;
@Field(type = FieldType.Text)
private String department;
@Field(type = FieldType.Keyword)
private String app;
@Field(type = FieldType.Date, format = DateFormat.custom,pattern = "yyyy-MM-dd HH:mm:ss")
private String startTime;
}
@Slf4j
@Component
public class IndexGenerator {
private LocalDate indexSuffix;
private final boolean indexSharding;
public IndexGenerator(AppConfigProperties properties) {
this.indexSharding = properties.isIndexSharding();
}
public String getIndexName(String prefix) {
if(!indexSharding) {
return prefix + "1";
}
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy_MM");
String suffix = formatter.format(indexSuffix == null ? LocalDateTime.now() : indexSuffix);
return prefix + suffix;
}
public void setIndexSuffix(LocalDate indexSuffix) {
this.indexSuffix = indexSuffix;
}
}
创建索引
public void createAll(LocalDate localDate) {
try {
indexGenerator.setIndexSuffix(localDate);
for (Class<?> clazz : clazzList) {
if(!elasticsearchRestTemplate.indexExists(clazz)){
String indexName = elasticsearchRestTemplate.getPersistentEntityFor(clazz).getIndexName();
elasticsearchRestTemplate.createIndex(clazz);
elasticsearchRestTemplate.putMapping(clazz);
log.info("Index {} created !", indexName);
}
}
} finally {
indexGenerator.setIndexSuffix(null);
}
}
删除索引
private void delete(String prefix) {
try {
String indexName = indexGenerator.getIndexName(prefix, i);
GetIndexRequest getIndexRequest = new GetIndexRequest().indices(indexName);
boolean exists = restHighLevelClient.indices().exists(getIndexRequest, RequestOptions.DEFAULT);
if(exists) {
log.info("Delete index {} ...", indexName);
DeleteIndexRequest request = new DeleteIndexRequest(indexName);
restHighLevelClient.indices().deleteAsync(request, RequestOptions.DEFAULT,
ActionListener.wrap(onResponse(), onFail()));
}
} catch (IOException e) {
log.error("Get index error", e);
}
}
ES创建索引
最新推荐文章于 2024-04-27 09:48:32 发布