[230508] module 5~8 복습

뜨개발자·2023년 5월 8일
0

TIL

목록 보기
71/75

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의 복구도 비교적 쉽게 이루어질 수 있을 듯


profile
뜨개질하는 개발자

0개의 댓글