kok202
엘라스틱 서치 인덱스 동적 생성?

2019. 3. 18. 19:28[개발] 기록/오늘의 고민

일반적으로 엘라스틱 서치에서 인덱스 생성은 엔티티 클래스를 하나 만들고 이를 createIndex(Entity.class) putMapping(Entity.class) 해주는 방식이다.


이게 가능한 이유는 Entity에 Document 어노테이션이 있고 이 안에 value값으로 인덱스 이름이 지정하기 때문이다


그래서 일반적으로는 하나의 엔티티에 하나의 인덱스가 맞물리게 되어있다.


주어진 문제 상황은 하나의 데이터 포맷을 여러개의 다른 이름인 인덱스에 가져다 사용하고 싶은 상황이다.


웹문서를 보니깐 이런경우 Document 어노테이션 value를 바꾸는 방법을 사용하더라.


근데 class의 어노테이션이 시시각각 바뀌는게 부작용이 있을 것 같아서 고민된다.


그래서 생각한 것이

1. Create Index string을 쓰자

2. Entity에 Document 어노테이션을 붙여서 Repository를 사용하지 말고 high level 인 elasticsearch template을 사용하자

3. 인덱스 Mapping 을 빌더를 따로 만들어서 사용할지 고민중이다.


다시 문제 상황

알아봐야 하는 것 

- @Document 를 사용안해도 엘라스틱 서치 repository 를 사용 가능한가?

- @Document 를 사용안해도 Mapping을 하는데 괜찮을까?