본문 바로가기
IT/Elasticsearch

Elasticsearch 검색 (Query DSL)

by 최고영회 2020. 9. 9.
728x90
반응형
SMALL

URI 뒤에 _search?q=.... 로 검색 가능하다.

curl -XGET http://ip:9200/index/type/_search?q=id:yhkim,hyneeee

여러 index 를 하려면 index 부분에 콤마로 여러개 입력도 가능하다.

지정하지 않을 경우 전체 index에 대해서 검색도 가능하다.

기본적으로 URI 로 검색할 수 있으나 아주 기본적인 것들만 맛보기로 사용하는 수준이고

복잡한 검색을 하려면 Query DSL을 사용한다.

Query DSL 을 이용 할 경우 HTTP 요청 시 Request Body에 조건 등을 json 형태로 입력한다.

Query DSL 에는 match, term, range 등의 다양한 질의 방법이 있다.

주요한 부분만 정리해 본다.

쿼리와 필터의 차이

- 사용처 : 쿼리(주로 Full Text Search에서 사용), 필터(Yes or No 조건으로 사용)

- score : 쿼리(O), 필터(X)

- 캐싱 : 쿼리(X), 필터(O)

- 속도 : 쿼리(느림), 필터(빠름)

 

Term 필터

- 검색어를 분석하지 않고 검색어 자체를 keyword로 생각하고 매칭

Term 쿼리

- 검색어를 분석하지 않고 검색어 자체를 keyword로 생각하고 매칭, score 포함 반환

Terms 쿼리

- Term 쿼리와 같으나 검색어를 여러개 입력할 수 있으며 포함하는 단어 검색이 가능하다.

- 위의 Term 과 비교해 보면 Term 은 privacyInfo 가 검색어와 같은 것에 대해서만 검색했고

Term의 경우 검색어가 포함된 결과를 검색한다.

매치 쿼리

- 검색어를 분석하여 keyword로 매칭

- 기본적으로 분석된 keyword 들은 or 조건으로 검색된다.

- boolean (default or 조건을 and로 변경 가능) / pharse (단어 사이에 다른 term이 들어가도 검색 가능) 등과 같은 옵션을 줄 수 있다.

 

728x90
반응형
LIST