code name blue

elasticsearch : 검색 결과별 쿼리 (1) - from/size, sort 본문

Programming/Elasticsearch

elasticsearch : 검색 결과별 쿼리 (1) - from/size, sort

byebyeblue 2019. 10. 21. 13:49
elasticsearch 6.4.3 version

 

elasticsearch를 사용하다 보면 다양한 검색 결과를 필요로 하게 된다.

이 때 사용할 쿼리들을 정리해 보았다.

 

 

1. from / size (공식문서)

elasticsearch의 기본 from 값은 0, size 값은 10이다.

따라서 쿼리의 결과로 "hits"의 "total"이 21이 나와도 10개의 결과만 보여진다.

이 때 아래와 같이 size에 값을 지정하여 검색 결과의 최대값을 정할 수 있다.

 

{
    "from":0, "size":30,
    "query":{
        "match_all":{}
    }
}

 

최대 30개의 결과가 표시되고, size의 최대값은

index setting의 index.max_result_window에 설정된 값을 초과하여 설정할 수 없다.

해당 설정값은 기본적으로 10,000으로 설정되어 있으며 따라서 최대 10,000개의 document를 불러 올 수 있다.

 

 

2. sort (공식문서)

sort 쿼리는 특정 필드에 정렬을 추가하는 기능을 한다.

기본적으로 elasticsearch는 _score를 기준으로 내림차순(desc) 정렬을 한다.

다른 항목은 기본적으로 오름차순(asc) 정렬이다.

"title" 필드는 오름차순으로, "rate" 필드와 "_score"는 내림차순으로 정렬하고 싶다면 아래 예제와 같이 작성한다.

 

{
    "sort"{
        {"rate":"desc"},
        "_score"
    },
    "query":{
        "match_all":{}
    }
}
 

 

Comments