[개발] 기록/오늘의 고민(4)
-
ControllerAdvice의 Response status 가 변경되지 않는 문제
문제 상확을 복기하는 과정이므로 timestamp 값은 무시합니다. 문제 상황 @ControllerAdvice public class MyControllerAdvice { @ResponseStatus(code = CONFLICT) @ExceptionHandler(MyException.class) public MyException myHandler(MyException ex) { return ex; } } 결과 Status 404 Body { "timestamp": "2019-06-20T02:49:49.965+0000", "status": 404, "error": "Not Found", "message": “My exception occured!”, "path": “…” } @ResponseStatus 로..
2019.06.20 -
엘라스틱 서치 Rest Client
해결1. 엘라스틱 서치 템플릿을 안쓰는 방향으로 하였다.2. 엘라스틱 서치 (유사) JPA 를 안사용 하는 방향으로 하였다.3. 엘라스틱 서치를 Rest api로 호출하기로 하였다.=> 엘라스틱 서치는 자바에서 Rest api 로 엘라스틱 서치를 호출 할 수 있도록 2가지 형태로 지원한다.=> 1. Low level REST Client=> 2. High level REST Client=> Low level REST Client 는 RestClient 로 지원하며 엘라스틱 서치에 REST API로 접근하는 방식이다.=> High level REST Client 는 HighLevelRestClient 로 지원하며 엘라스틱 서치에 접근할 때 리퀘스트를 빌더로 만들어서 API 통신 하는 방식이다. 리스폰스도 ..
2019.03.20 -
엘라스틱 서치 인덱스 동적 생성, 해쉬, 데이터 저장?
해결 createIndex(string) 이후 putMapping에 XContentBuilder로 만든 mapping 데이터를 넘기는 식으로 구현.XContentBuilder를 자동화하기 위해 class파일의 필드 이름과 필드에 적용된 Annotation을 추출하는 클래스를 만듬 문제상황1. 테스트 코드는 잘 동작하는데 프로그램은 동작하지않는다.2. 엘라스틱 서치에 Hash 데이터를 넣어야한다. 어떻게 해야하는가? => nested나 object를 사용한다는데=> 해쉬 데이터는 mapping 파일에 어떤식으로 써야하는가?=> Entity에 적용된 Annotation을 바탕으로 XContentBuilder는 해쉬 필드에 어떻게 접근할 것인가? TODO 문제상황스프링부트가 지원하는 엘라스틱 서치 데이터 저장..
2019.03.19 -
엘라스틱 서치 인덱스 동적 생성?
일반적으로 엘라스틱 서치에서 인덱스 생성은 엔티티 클래스를 하나 만들고 이를 createIndex(Entity.class) putMapping(Entity.class) 해주는 방식이다. 이게 가능한 이유는 Entity에 Document 어노테이션이 있고 이 안에 value값으로 인덱스 이름이 지정하기 때문이다 그래서 일반적으로는 하나의 엔티티에 하나의 인덱스가 맞물리게 되어있다. 주어진 문제 상황은 하나의 데이터 포맷을 여러개의 다른 이름인 인덱스에 가져다 사용하고 싶은 상황이다. 웹문서를 보니깐 이런경우 Document 어노테이션 value를 바꾸는 방법을 사용하더라. 근데 class의 어노테이션이 시시각각 바뀌는게 부작용이 있을 것 같아서 고민된다. 그래서 생각한 것이1. Create Index st..
2019.03.18