- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- mssql
- datatable 행 제거
- C#
- PostgreSQL
- DataTable Merge
- 소수점 자르기
- 이행은 이미
- 날짜 변환
- cursor
- 날짜 변환 형식
- MS-SQL
- DataTable
- group by
- datatable 컬럼 제거
- 데이터테이블 합치기
- DataTable Copy
- 소수점
- indeof
- lastIndexOf
- Bucket
- 대량 insert
- 올림
- Column
- 버림
- contains
- 데이터테이블
- Elasticsearch
- 문자열 찾기
- merge
- 다른 테이블에 속해있습니다
노트
Elasticsearch에서 고유 값 개수 및 필드별 집계 본문
1. Elasticsearch에서 고유 값 개수 계산하기
Elasticsearch는 대량의 데이터를 효율적으로 검색하고 분석할 수 있는 강력한 도구입니다. 특정 필드의 고유 값 개수를 계산하려면 cardinality
집계를 활용할 수 있습니다. 예를 들어, 특정 이벤트와 시간 범위에 해당하는 데이터에서 특정 필드의 고유 값 개수를 계산하고 싶다면 아래와 같은 쿼리를 사용할 수 있습니다. 이 쿼리는 unique_field
라는 필드의 고유 값 개수를 계산하며, size: 0
으로 설정했기 때문에 검색된 문서 자체는 반환되지 않고 집계 결과만 반환됩니다.
{
"query": {
"bool": {
"filter": [
{ "term": { "event_type.keyword": "SpecificEvent" } },
{ "range": { "event_time": { "gte": "2023-01-01", "lt": "2023-01-31" } } }
]
}
},
"size": 0,
"aggs": {
"unique_count": {
"cardinality": {
"field": "unique_field"
}
}
}
}
2. 쿼리 실행 결과
위 쿼리를 실행하면 JSON 형식의 결과가 반환됩니다. 결과는 aggregations
섹션에서 고유 값 개수를 확인할 수 있습니다. 예를 들어, 아래 결과에서 "value": 42
는 unique_field
필드에서 고유 값이 42개임을 나타냅니다. 이 방식은 대량의 데이터에서 중복을 제거하고 특정 필드의 고유 값 분포를 파악하는 데 매우 유용합니다.
{
"aggregations": {
"unique_count": {
"value": 42
}
}
}
3. 특정 필드별 고유 값 계산하기
특정 필드별로 고유 값을 계산하고 싶다면 terms
집계와 cardinality
집계를 함께 사용할 수 있습니다. 아래는 필드별로 고유 값 개수를 계산하는 예시입니다. 이 쿼리는 group_field
로 데이터를 그룹화한 뒤, 각 그룹에서 unique_field
의 고유 값 개수를 계산합니다. 이를 통해 각 그룹별로 고유 값 분포를 분석할 수 있습니다.
{
"query": {
"bool": {
"filter": [
{ "term": { "event_type.keyword": "SpecificEvent" } },
{ "range": { "event_time": { "gte": "2023-01-01", "lt": "2023-01-31" } } }
]
}
},
"size": 0,
"aggs": {
"group_by_field": {
"terms": {
"field": "group_field.keyword",
"size": 10
},
"aggs": {
"unique_count_per_group": {
"cardinality": {
"field": "unique_field"
}
}
}
}
}
}
4. 필드별 집계 결과
위 쿼리의 결과는 각 group_field
값에 대해 unique_field
의 고유 값 개수를 반환합니다. 예를 들어, 아래 결과는 그룹별로 고유 값 개수를 보여줍니다. GroupA
는 42개의 고유 값을, GroupB
는 58개의 고유 값을 가지고 있음을 알 수 있습니다. 이 방식은 필드별로 데이터를 그룹화하고 각 그룹의 고유 값 분포를 분석하는 데 매우 유용합니다.
{
"aggregations": {
"group_by_field": {
"buckets": [
{
"key": "GroupA",
"doc_count": 100,
"unique_count_per_group": {
"value": 42
}
},
{
"key": "GroupB",
"doc_count": 150,
"unique_count_per_group": {
"value": 58
}
}
]
}
}
}
'ㄱㅂ > Elasticsearch' 카테고리의 다른 글
Elasticsearch Bucket(Group by) (0) | 2025.06.28 |
---|