spring-elastic을 사용하여 인덱스를 만드는 기본적인 방법은 아래와 같다.
@Document(
indexName = "log",
)
@Getter
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode
public class KafkaLogDoc {
@Id
@Field(type = FieldType.Keyword)
private String id;
@Field(type = FieldType.Keyword)
private name ;
<추가 필드>
}
여기서 indexName을 log-2014-05-13 형식으로 만들고 싶은 경우가 있다. 날짜별로 인덱스를 자동생성되게 하는 경우이다.
스프링 빈을 활용하는 방법
@Component
public class IndexNameProvider {
public String dateSuffix() {
LocalDate today = LocalDate.now();
return today.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
}
}
스프링 빈을 하나 생성한다. 그리고 인덱스명 뒤에 붙을 패턴을 정의한다.
그리고 @Document에 SPEL로 해당 빈에서 정의한 dateSuffix를 추가한다.
@Document(
indexName = "log" + "-#{@indexNameProvider.dateSuffix()}",
)
@Getter
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode
public class KafkaLogDoc {
@Id
@Field(type = FieldType.Keyword)
private String id;
@Field(type = FieldType.Keyword)
private name ;
<추가 필드>
}
그러면 인덱스가 생성될 때 log-2014-05-13
형식으로 생성이 된다.
static 메소드를 사용하는 방법
@Document(
indexName = "log" + "-#{T(java.time.LocalDate).now().toString()}",
)
이렇게 지정하면 인덱스명이 log-2014-05-13
형식으로 생성이 된다.
참고
반응형