elasticsearch aggregation(aggs) paging 하기
엘라스틱서치 어그리게이션 페이징인 6버젼에서 나온 api이다
Bucket Sort Aggregation | Elasticsearch Reference [6.1] | Elastic
The bucket_sort aggregation, like all pipeline aggregations, is executed after all other non-pipeline aggregations. This means the sorting only applies to whatever buckets are already returned from the parent aggregation. For example, if the parent aggrega
www.elastic.co
우리는 5 -> 7버젼으로 이동중에 있고 거의 대부분이 이전되었다
elasticsearch 5버젼 쓰면서 aggs 페이징 못해서 얼마나 힘들었는지 이번에 버전을 업하면서 사용하게 되어서 굉장히 기분이좋았다 그래서 별거 아니지만 어떻게 사용했는지 공유하고 싶어서 글 쓴다
{
"size": 0,
"_source": false,
"aggregations": {
"data": {
"terms": {
"field": "test",
"min_doc_count": 1,
"order": [
{
"_key": "asc"
}
]
},
"aggs": {
"data": {
"terms": {
"field": "test"
},
"aggs": {
"paging": {
"bucket_sort": {
"from": 0,
"size": 20
}
}
}
}
}
}
}
}
aggs만 사용하기 때문에 size는 0처리 하였고 _source도 가져올 필요가 없기때문에 false처리했다
그 하단 부분이 중요한데 aggregations이나 aggs나 같은 표현이니 무시하길 바란다
field test라는놈으로 집합처리를 하고 최소 1개이상인 것을 오름 차순 정렬을 한다 _key는 test 컬럼의 값이 되며 그것을 오름차순 정렬하라
는 의미이다 그 하위 aggs는 상위 그룹핑 한 값을 말 그대로 paging 처리하는 것이다
구지 sql로 따지자면
mysql dual은 없지만 그냥 썻다
select a.test from (select test from dual group by test order by test) as a group by a.test limit 0, 20