쿼리 언어 소개

edit

Elasticsearch는 쿼리 실행에 사용할 수 있도록 JSON 스타일의 도메인 전용 언어를 제공합니다. 이를 Query DSL이라고 합니다. 이 쿼리 언어는 매우 포괄적이므로 처음에는 부담스러울 수도 있습니다. 하지만 가장 효과적인 학습 방법은 몇 가지 기본적인 예와 함께 시작해보는 것입니다.

마지막 예로 돌아가서 이 쿼리를 실행했습니다.

GET /bank/_search
{
  "query": { "match_all": {} }
}

위 내용을 자세히 보면 query 부분은 쿼리 정의가 무엇인지 알려주며, match_all 부분은 실행하려는 쿼리의 유형을 나타낼 뿐입니다. match_all 쿼리는 지정된 색인의 모든 문서를 검색하는 것입니다.

query 매개변수 외에 다른 매개변수도 전달하여 검색 결과에 영향을 줄 수 있습니다. 위 섹션의 예는 `sort`를 전달했는데, 이번에는 `size`를 전달하겠습니다.

GET /bank/_search
{
  "query": { "match_all": {} },
  "size": 1
}

`size`가 지정되지 않으면 기본값은 10입니다.

이 예에서는 `match_all`을 수행했더니 문서 11 ~ 20이 반환되었습니다.

GET /bank/_search
{
  "query": { "match_all": {} },
  "from": 10,
  "size": 10
}

from 매개변수(0 기반)는 어떤 문서 색인에서 시작할지, size 매개변수는 from 매개변수에서 시작하여 몇 개의 문서를 반환할지 지정합니다. 이 기능은 검색 결과의 페이징 구현에 유용합니다. `from`이 지정되지 않으면 기본값은 0입니다.

이 예는 `match_all`을 수행하고 계정 잔액을 기준으로 내림차순으로 결과를 정렬한 다음 상위 10개(기본 크기) 문서를 반환합니다.

GET /bank/_search
{
  "query": { "match_all": {} },
  "sort": { "balance": { "order": "desc" } }
}