공식 es java client인 elasticsearch-java 레포에서 기여할 만한 이슈들을 정리해봤습니다.
서버 사이드 코드에서 empty object를 반환하는 경우, java client의 JsonpDeserializer.fixedValue(T) 코드는 이를 제대로 입력받지 않기 때문에, emptyObject(T) 함수를 사용함으로써 정상적으로 입력받도록 할 수 있습니다. SimulateIndexTemplateResponse 클래스에서도 fixedValue를 사용하는데, 서버 사이드에서는 SimulateIndexTemplateResponse는 json형태의 content를 지니고 있기 때문에 emptyObject로 수정하기를 권고하고 있습니다.
https://github1s.com/elastic/elasticsearch-java/blob/main/java-client/src/main/java/co/elastic/clients/elasticsearch/security/DisableUserResponse.java#L63-L64
2 https://github.com/elastic/elasticsearch-java/issues/766
name 인자가 DateHistorgramAggration builder에 있으면 "the content is invalid" 에러를 반환하므로, builder에서 name 생성 부분을 제외해야한다는 이슈입니다. 하지만, 해당이슈는 client코드가 아닌 elasticsearch-specification을 수정하는 방향이 더 적합하다는 댓글이 있어서 애매한 것 같습니다.
3 https://github.com/elastic/elasticsearch-java/issues/655
WriteResponseBase 클래스의 primaryTerm과 seqNo 필드가 null을 반환할 수도 있기 때문에, 기존 long타입을 Long타입으로 수정함으로써 NullPointerException을 방지하자는 이슈입니다. 해당 이슈는 이미 6달전에 PR이 올라간 상태이지만, merge가 되진 않아서 더 보완할 점들을 찾아 새로운 pr을 전송해도 괜찮을지 궁금해서 가져와봤습니다.
감사합니다!! 2번이슈는 말씀해주신대로 es spec변경이 우선되어야 해서 진행이 불가능할거 같고, 3번은 다른분이 PR을 만드셨는데 아직 리뷰가 안된거 같네요!
1번은 첫 기여로 바로 도전해봐도 좋을거 같네요!! ES에도 한번 이슈 찾아보시고, 해볼만한게 없다면 1번 바로 도전해보시죠ㅎ 내일 OT까지 저도 코드 확인해가겠습니다!
es에서 추가적으로 이슈를 찾아봤습니다.
인제님께서 추천해주신 이슈이면서 저 역시 후보로 골라놨던 이슈입니다. HighlightBuilder 클래스에는 encoder가 있지만, HighlightBuilder.Field 클래스엔 없기 때문에, 검색 query의 fields 부분에 encoder 값이 인식되지 않는 이슈인 것 같습니다.
현재 es의 해당 이슈와 es-java의 https://github.com/elastic/elasticsearch-java/issues/718 이슈를 두고 고민중입니다. 제안되는 해결 방법은 es-java 쪽 이슈가 더 쉽고 명확한 것 같은데, 개인적으로 해당 es이슈의 해결방법도 매우 궁금합니다.