elasticsearch에서 pagination을 하고 싶다면, search_after를 사용한다.
https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-search-after.html
위 url에서 제공하는 간단한 예제는 다음과 같다.
GET twitter/tweet/_search
{ "size": 10, "query": { "match" : { "title" : "elasticsearch" } }, "search_after": [1463538857, "654323"], "sort": [ {"date": "asc"}, {"_id": "desc"} ] }
여러 날짜별로 분리된 인덱스에서도 search_after를 사용할 수 있다.
다음 예제는 search_after를 활용할 수 있도록 2개의 필드로 소팅하고 2개의 특정 값으로 pagination하는 예제이다.
curl -XGET 'http://search.google.io:9200/plus.-*/_search?pretty' -H 'Content-Type: application/json' -d'
{
"version":true,
"query":{
"bool":{
"must":[
{
"match_all":{ }
},
{
"range":{
"@timestamp":{
"gte":"2018-01-31T16:52:07+09:00",
"lte":"2018-01-31T17:52:07+09:00"
}
}
}
]
}
},
"size":11,
"sort":[
{
"@timestamp":{
"order":"desc"
}
},
{
"_uuid.keyword":{
"order":"asc"
}
}
]
}
'
curl -XGET 'http://search.google.io:9200/plus-*/_search?pretty' -H 'Content-Type: application/json' -d'
{
"version":true,
"query":{
"bool":{
"must":[
{
"match_all":{
}
},
{
"range":{
"@timestamp":{
"gte":"2018-01-31T16:52:07+09:00",
"lte":"2018-01-31T17:52:07+09:00"
}
}
}
]
}
},
"size":11,
"search_after":[
"1517388213000",
"f938251211a3"
],
"sort":[
{
"@timestamp":{
"order":"desc"
}
},
{
"_uuid.keyword":{
"order":"asc"
}
}
]
}
'
'Elasticsearch' 카테고리의 다른 글
[elasticsearch6] 템플릿 보기 (0) | 2018.04.17 |
---|---|
elasticsearch apm x-pack소개와 UI 캡쳐 화면 (0) | 2018.02.08 |
[elasticsearch6] uuid-Fielddata is disabled on text fields by default 에러 해결하기 (0) | 2018.01.24 |
[elasticsearch5] search_after 예제 (0) | 2017.11.24 |
[elasticsearch5] _id 필드 대신 _uid (0) | 2017.11.22 |