4. 데이터 검색

문서는 색인 시 설정한 분석기에 의해 분석 과정을 거쳐 토큰으로 분리되는데, 이러한 분석기는 색인 시점에 사용할 수도 있지만 검색 시점에 사용하는 것도 가능하다. 특정 문장이 검색어로 요청되면 분석기를 통해 분석된 토큰의 일치 여부를 판단해서 그 결과에 점수(Score)를 매긴다. 그리고 이를 기반으로 순서를 적용해 결과를 사용자에게 최종적으로 출력하게 된다.

4.1 검색 API

문장은 색인 시점에 텀으로 분해된다. 검색 시에는 이 텀을 일치시켜야 검색이 가능해진다.

검색 시점에 Keyword 타입과 같은 분석이 불가능한 데이터와 Text 타입과 같은 분석이 가능한 데이터를 구분해서 분석이 가능할 경우 분석기를 이용해 분석을 수행한다. 이를 통해 검색 시점에도 텀을 얻을 수 있으며, 해당 텀으로 역색인 구조를 이용해 문서를 찾고 이를 통해 스코어를 계산해서 결과로 제공한다.

4.1.1 검색 질의 표현 방식

엘라스틱서치에서 제공하는 검색 API는 기본적으로 질의(Query)를 기반으로 동작한다.

URI 검색

URI를 이용하는 방식은 HTTP GET 요청을 활용하는 방식으로 key=value 형태로 전달한다.

Request Body 검색

Request Body 방식은 HTTP 요청 시 Body에 검색할 칼럼과 검색어를 JSON 형태로 표현해서 전달하는 방식이다. 엘라스틱서치가 제공하는 검색 API를 모두 활용하기 위해서는 반드시 Request Body 방식을 이용해야 한다.

URI방식 말고 Requet Body 방식을 사용하자.

4.2 Query DSL 이해하기

4.2.1 Query DSL 쿼리의 구조