Search API
Search API는 간단한 형태의 URI Search 형태도 제공하고, RequestBody작성을 통해서 다양한 옵션을 추가한 RequestBody Search 형태도 제공한다. 또한 index_name의 경우에는 한 개 이상의 인덱스를 지정해서 다수의 인덱스에 동시 쿼리를 날릴 수도 있다. 만약 모든 인덱스에 쿼리를 날린다면 _all이라는 형태의 API로 날릴 수도 있다.
Search API를 통해 country 필드에 South라는 단어가 들어 있는 문서에 대한 검색을 요청했고 그 결과가 검색되었음을 확인 할 수 있다.
RequestBody의 대표적인 옵션들
옵션 | 내용 |
query | 실제 검색을 위한 쿼리문을 지정 |
from/size | 검색 결과를 n개의 단위로 나눠서 볼 때 사용 |
sort | 검색 결과를 _score가 아닌 별도의 필드를 기준으로 정렬 |
source | 검색 결과 중 특정 필드의 내용만을 보고자 할 때 사용 |
highlighting | 검색 결과 중 검색어와 매칭하는 부분을 강조하기 위해 사용 |
boost | 검색 결과로 나온 스코어를 변경할 때 사용 |
scroll | 검색 결과를 n개의 단위로 나눠서 볼 때 사용. from/size와 유사하지만 scroll id를 통해서 다음번 검색 결과를 가져올 수 있다 |
- from/size
결과를 보면 검색 결과는 205개지만, size 옵션을 2로 설정해 놓아서 0번부터 2개까지만 검색 결과가 내려오는 것을 확인할 수 있다.
- sort
보통 검색결과는 검색어를 바탕으로 계산된 score가 가장 높은 문서를 기준으로 정렬되지만, sort 옵션을 사용할 경우 해당 필드를 기준으로 오름차순 또는 내림차순으로 정렬된다. (asc: 오름차순, desc: 내림차순)
- _source
결과를 보면 source 옵션으로 지정한 country와 lat만 검색 결과에 포함된 것을 볼 수 있다. 위의 결과는 country 필드에 South라는 단어가 포함되어있고 그 중에서 country, lat 필드만 출력하는 것이다.
- highlighting
위의 결과처럼 사용자가 입력한 검색어를 강조해준다. highlighting 옵션은 검색 결과 중 어떤 필드에 highlighting 효과를 줄 것인지 설정할 수 있다. 그리고 검색 결과의 _source필드가 아닌 별도의 highlight 필드를 통해서 결과가 제공된다.
- boost
검색 결과로 나온 스코어를 변경할 때 사용한다. 특정 검색 쿼리의 스코어를 높이거나 낮추고 싶을 때 boost 옵션을 활용하면 검색 결과로 나온 스코어를 대상으로 boost 옵션에 설정된 값을 곱한 값이 스코어로 지정된다.
- scroll
scroll 옵션을 사용하면 scroll_id라는 항목이 추가로 내려온다. 그 후의 검색 결과는 별도의 쿼리 없이 scroll_id만으로 다음 검색 결과를 볼 수 있음을 알 수 있다. scroll은 이렇게 scroll_id를 이용해서 다음번 검색 결과를 받아올 수 있기 때문에 쿼리를 다시 날려야 하는 from/size보다 더 편하게 pagination을 구현할 수 있다. 특히 scroll 옵션은 대규모의 batch 처리에 주로 사용된다.
참고문헌: 기초부터 다지는 ElasticSearch 운영 노하우
'Elastic Stack > 개념' 카테고리의 다른 글
Filter Context (0) | 2023.04.27 |
---|---|
Query Context (0) | 2023.04.27 |
Query DSL (0) | 2023.04.27 |
analyzer (0) | 2023.04.26 |
inverted index (2) | 2023.04.26 |