220318 elasticsearch dynamic 필드 설정, 배열에 대해

1 분 소요

elasticsearch mapping의 dynamic은 추가되는 문서에 기존 mapping에 존재하는 필드가 아닌 필드가 존재할 시 어떻게 대응할 지에 대해 설정하는 것이다.

dynamic 변수의 parameter

  • true는 문서의 새로운 필드를 mapping에도 추가하여 색인이 되도록 하는 것이고
  • false는 문서의 새로운 필드를 무시하지만, 색인하지 않은 채로 _source에 저장한다.
  • runtime은 무엇인지 모르겠지만, strict는 새로운 필드를 포함한 문서 입력시 오류를 리턴한다고 한다.

runtime field에 대해서 조금 더 찾아보았는데,

dynamic의 runtime 설정은 색인되지 않지만 유연하게 사용되는 듯 하다

색인되지 않지만 문서를 새로 추가하거나할 때 기존의 설정을 잘 몰라도 유연하게 추가할 수 있게끔하는 설정인듯 싶다. 이는 query time에 기존 필드를 상속하여 나타난다고 하니… 나중에 필요할 때 상기시켜 사용하면 좋을 듯 하다.

아무튼, 기존 es의 재색인이 완료되었으니 필드를 맞추는 작업을 해야 한다. 우선적으로 thumbnail 필드에 단독 값만 존재하도록 로직을 수정하기로 했다.

그러다 문득 단독 값 필드들이 배열에 대한 요청을 어떻게 처리하는지 확인해보고 싶었다. 실제로 배열이 들어갈 수도 있기 때문에..

배열을 넣고 검색했을 떄..

배열이 들어갈 뿐만 아니라 검색 시에도 나타나는 것을 확인했다.
공식 document를 확인해보니, 모든 타입의 필드에서 배열을 지원하지만 타입이 동일해야한다는 것을 알 수 있었다.

그렇다면, 사실 상 배열로 존재하는 것은 mysql에서 백업되는 것을 제외하고는 크게 문제되지 않을 것이다. 하지만 로직 상 문제가 없도록 막아두었다.


또 다른 할 일으로 큐레이션 문서의 전문 변경량 추적을 검색해보았다. 개인적으로는 깃과 같은 형태의 추적이 가능하면 좋겠지만… 검색결과 해당 내용은 존재하지 않았다. (대충 어떤 라이브러리 같은게 있기도 했지만, 라이브러리까지 설치해서 사용하고 싶지는 않았다.) 그래서 stackoverflow에 질문한 상태고, 답변이 오는대로 반영해보려고 한다.

카테고리:

업데이트: