5.2장 solution 5번
#request
GET web_traffic/_search
{
"size": 0,
"aggs": {
"status_code_buckets": {
"terms": {
"field": "http.response.status_code",
"order": {
"runtime.50": "asc"
}
},
"aggs": {
"runtime": {
"percentiles": {
"field": "runtime_ms",
"percents": [
50
]
}
}
}
}
}
}
#response
...
...
"aggregations" : {
"status_code_buckets" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 230,
"buckets" : [
{
"key" : "503",
"doc_count" : 1821,
"runtime" : {
"values" : {
"50.0" : 158.0
}
}
},
...
...
runtime
이라고 이름을 붙인 aggregation의 결과를 보면, runtime
내에 values
가 있고, 또 이 내부에 50.0
과 그 결과가 있는 구조임
이 결과를 활용해서 정렬을 진행하는 것이 문제의 핵심인데, request를 보면 runtime.50
으로 활용하고 있는 것을 확인할 수 있음
내가 생각하기에는 활용하는 값은 runtime.values.50
이 되어야 맞는 것 같았는데.
runtime.10
으로 변경해도 잘 작동하는 것을 확인함
percentiles
aggregation은 데이터를 다 계산한 결과를 가지고 있고, 내가 그 중에서 어떤 데이터만 출력할지를 지정해주는 방식인 듯
GET _cat/indices?v
에서 결과로 나오는 docs.deleted
가 실제로 지금까지 해당 인덱스에서 지워진 document 개수인지 궁금해짐
5개의 document를 가진 인덱스를 임의 생성하고 GET _cat/indices?v
해보면 docs.count
가 5개인 것을 확인 가능함
이후 하나의 document를 삭제한 후, 해당 인덱스에 match_all
request를 날려 document 수가 4개인 것을 확인함
이후 다시 GET _cat/indices?v
해봤는데, 여전히 docs.count
가 5개로 확인됨
실시간으로 인덱스들의 정보를 가져오는 것이 아니라 일정 시간마다 업데이트 하는 방식인 듯
어느 정도 지난 후 다시 GET _cat/indices?v
확인해보니, docs.count
가 4개로 줄어들었음
그런데 의문인 점은, docs.deleted
가 2개로 보인다는 것
위 내용 작성하다가 다시 궁금해진 내용
인덱스 별로 지금까지 삭제한 document 수
를 저장하고 있는 것인지,
아니면 isDeleted
같은 안 보이는 필드가 있고, 삭제 처리된 document에 대해 그 필드 값이 true
로 변경되는 방식으로, docs.deleted
의 값은 이 필드가 true
인 document들을 세는 것일지?
만약에 후자라면 삭제한 document의 복구도 비교적 쉽게 이루어질 수 있을 듯