Elasticsearch 집계정보와 표본

개발새발·2023년 1월 1일
0

elasticsearch

목록 보기
37/54

후.. 일주일간 아파서 죽는 줄 알았다 ㅠㅠ 이번년도 들어 왜케 자주 아픈지..여튼! 이번에는 ES로 특정필드의 실데이터 표본 100개랑 최대값이랑 중간값, 평균,추출해야할 일이 생겼다. 그래서 구해봄!

먼저, 통계집계를 구했다.

Request :

https://{es_url}/{index}/_search

{
     "size": 0,
     "aggs": {
        "{노출할 field명}": {
            "stats": {
                "field": "{통계집계할 field명}"
            }
        }
    }
}

Response :

{
    "took": 112,
    "timed_out": false,
    "_shards": {
        "total": 3,
        "successful": 3,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": {
            "value": 10000,
            "relation": "gte"
        },
        "max_score": null,
        "hits": []
    },
    "aggregations": {
        "{노출할 필드명}": {
            "count": 4406927, // 전체수
            "min": 0.0, // 해당 인덱스의 필드값중 가장 작은 수
            "max": 208941.0, // 해당 인덱스의 필드값중 가장 큰 수
            "avg": 8.764550899073209, // 해당 인덱스의 필드값의 평균
            "sum": 3.8624736E7 // 해당 인덱스의 필드값의 합
        }
    }
}

여기까진 어떻게 했는데, 표본?!! 🤯 표본.. 배운지가 몇년전이지.. 기억을 더듬고 있는데 다른 분께서 도와줬다. 표본이란 모집단의 부분집합, 즉, 여러 통계 자료를 포함하는 집단 속에서 그 일부를 뽑아내어 조사한 결과라고 한다. 따라서, ES로 표현해보면 아래와 같다.

Request :

{
    "query": {
        "bool": {
            "must": []
        }
    }, // 전체 데이터들
    "aggregations": {
        "group": {
            "terms": {
                "field": "{표본을 구할 필드명}",
                "size": 100, // 표본 100개
                "order": [
                    {
                        "_count": "desc"
                    },
                    {
                        "_key": "asc" // 필드값 정렬
                    }
                ]
            }
        }
    }
}

Response :

{
    "took": 128,
    "timed_out": false,
    "_shards": {
        "total": 3,
        "successful": 3,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": {
            "value": 10000,
            "relation": "gte"
        },
        "max_score": 1.0,
        "hits": [
            {
                "_index": "{인덱스명}",
                "_type": "_doc",
                "_id": "{id값}",
                "_score": 1.0,
                "_source": {
										"{표본을 구할 필드명}": 0,
                    "{field1}": "http://afasfd.com/asdfadsf",
	                  "{field2}": null,
										"{field3}": false,
                    "{field3}": [
                        {
                            "values": [
                                "ababa"
                            ],
                            "option_name": "a"
                        },
                        {
                            "option_values": [
                                "asdfas"
                            ],
                            "option_name": "b"
                        }
                    ],
                    "{field4}": "2019-05-08T13:45:12+09:00"
                }
            }....
        ]
    },
    "aggregations": {
        "group": {
            "doc_count_error_upper_bound": 167,
            "sum_other_doc_count": 46654,
            "buckets": [
                {
                    "key": 0, // 필드값
                    "doc_count": 2512339
                },
                {
                    "key": 1,
                    "doc_count": 203237
                },
                {
                    "key": 2,
                    "doc_count": 118079
                },
                {
                    "key": 3,
                    "doc_count": 61211
                },
                {
                    "key": 4,
                    "doc_count": 35823
                },
                {
                    "key": 5,
                    "doc_count": 22819
                },
                {
                    "key": 6,
                    "doc_count": 15780
                },
                {
                    "key": 7,
                    "doc_count": 10590
                },
                {
                    "key": 8,
                    "doc_count": 6563
                },
                {
                    "key": 10,
                    "doc_count": 4540
                },
                {
                    "key": 9,
                    "doc_count": 3493
                },
                {
                    "key": 11,
                    "doc_count": 1830
                },
                {
                    "key": 12,
                    "doc_count": 9920
                },
                {
                    "key": 13,
                    "doc_count": 9578
                },
                {
                    "key": 14,
                    "doc_count": 8574
                },
                {
                    "key": 15,
                    "doc_count": 7728
                },
                {
                    "key": 16,
                    "doc_count": 7109
                },
                {
                    "key": 17,
                    "doc_count": 6245
                },
                {
                    "key": 18,
                    "doc_count": 5743
                },
                {
                    "key": 19,
                    "doc_count": 5336
                },
                {
                    "key": 20,
                    "doc_count": 5312
                },
                {
                    "key": 21,
                    "doc_count": 4654
                },
                {
                    "key": 22,
                    "doc_count": 4221
                },
                {
                    "key": 23,
                    "doc_count": 4009
                },
                {
                    "key": 24,
                    "doc_count": 3676
                },
                {
                    "key": 25,
                    "doc_count": 3545
                },
                {
                    "key": 26,
                    "doc_count": 3156
                },
                {
                    "key": 27,
                    "doc_count": 2893
                },
                {
                    "key": 28,
                    "doc_count": 2781
                },
                {
                    "key": 30,
                    "doc_count": 2711
                },
                {
                    "key": 29,
                    "doc_count": 2639
                },
                {
                    "key": 31,
                    "doc_count": 2442
                },
                {
                    "key": 32,
                    "doc_count": 2305
                },
                {
                    "key": 33,
                    "doc_count": 2219
                },
                {
                    "key": 34,
                    "doc_count": 2112
                },
                {
                    "key": 35,
                    "doc_count": 1945
                },
                {
                    "key": 36,
                    "doc_count": 1880
                },
                {
                    "key": 37,
                    "doc_count": 1762
                },
                {
                    "key": 38,
                    "doc_count": 1739
                },
                {
                    "key": 40,
                    "doc_count": 1710
                },
                {
                    "key": 39,
                    "doc_count": 1648
                },
                {
                    "key": 41,
                    "doc_count": 1482
                },
                {
                    "key": 42,
                    "doc_count": 1475
                },
                {
                    "key": 43,
                    "doc_count": 1452
                },
                {
                    "key": 44,
                    "doc_count": 1393
                },
                {
                    "key": 45,
                    "doc_count": 1320
                },
                {
                    "key": 46,
                    "doc_count": 1239
                },
                {
                    "key": 47,
                    "doc_count": 1175
                },
                {
                    "key": 49,
                    "doc_count": 1153
                },
                {
                    "key": 48,
                    "doc_count": 1150
                },
                {
                    "key": 50,
                    "doc_count": 1135
                },
                {
                    "key": 52,
                    "doc_count": 1083
                },
                {
                    "key": 51,
                    "doc_count": 1064
                },
                {
                    "key": 53,
                    "doc_count": 1014
                },
                {
                    "key": 54,
                    "doc_count": 965
                },
                {
                    "key": 55,
                    "doc_count": 932
                },
                {
                    "key": 56,
                    "doc_count": 930
                },
                {
                    "key": 60,
                    "doc_count": 860
                },
                {
                    "key": 58,
                    "doc_count": 856
                },
                {
                    "key": 57,
                    "doc_count": 844
                },
                {
                    "key": 61,
                    "doc_count": 835
                },
                {
                    "key": 62,
                    "doc_count": 832
                },
                {
                    "key": 59,
                    "doc_count": 820
                },
                {
                    "key": 63,
                    "doc_count": 766
                },
                {
                    "key": 64,
                    "doc_count": 740
                },
                {
                    "key": 65,
                    "doc_count": 728
                },
                {
                    "key": 66,
                    "doc_count": 686
                },
                {
                    "key": 68,
                    "doc_count": 661
                },
                {
                    "key": 67,
                    "doc_count": 651
                },
                {
                    "key": 69,
                    "doc_count": 644
                },
                {
                    "key": 72,
                    "doc_count": 643
                },
                {
                    "key": 70,
                    "doc_count": 638
                },
                {
                    "key": 71,
                    "doc_count": 616
                },
                {
                    "key": 73,
                    "doc_count": 589
                },
                {
                    "key": 74,
                    "doc_count": 586
                },
                {
                    "key": 76,
                    "doc_count": 577
                },
                {
                    "key": 75,
                    "doc_count": 563
                },
                {
                    "key": 78,
                    "doc_count": 555
                },
                {
                    "key": 82,
                    "doc_count": 554
                },
                {
                    "key": 79,
                    "doc_count": 538
                },
                {
                    "key": 77,
                    "doc_count": 529
                },
                {
                    "key": 81,
                    "doc_count": 522
                },
                {
                    "key": 80,
                    "doc_count": 508
                },
                {
                    "key": 84,
                    "doc_count": 501
                },
                {
                    "key": 85,
                    "doc_count": 489
                },
                {
                    "key": 83,
                    "doc_count": 487
                },
                {
                    "key": 86,
                    "doc_count": 466
                },
                {
                    "key": 87,
                    "doc_count": 445
                },
                {
                    "key": 88,
                    "doc_count": 444
                },
                {
                    "key": 92,
                    "doc_count": 417
                },
                {
                    "key": 90,
                    "doc_count": 411
                },
                {
                    "key": 91,
                    "doc_count": 403
                },
                {
                    "key": 93,
                    "doc_count": 403
                },
                {
                    "key": 89,
                    "doc_count": 391
                },
                {
                    "key": 94,
                    "doc_count": 391
                },
                {
                    "key": 95,
                    "doc_count": 383
                },
                {
                    "key": 96,
                    "doc_count": 370
                },
                {
                    "key": 100,
                    "doc_count": 359
                },
                {
                    "key": 97,
                    "doc_count": 357
                },
                {
                    "key": 104,
                    "doc_count": 357
                }
            ]
        }
    }
}

⇒ 위가 표본값이 되고, 중앙값은 N이 짝수이면 중앙값은 N/2번째 표본의 값과 N/2+1번째 표본의 값의 평균이므로 n/2번째 표본 값 : 49, n/2+1번째 표본 값: 48 이므로 48.5가 된다.

profile
발새발개

0개의 댓글