본문 바로가기
ELK

[ElasticSearch] metric aggregation

by 슈슈슉민 2025. 3. 29.

aggregation 은 documnet 안에서 조합을 통해서 어떠한 값을 도출하는 것입니다. 그 중에서 metric aggregation 은 산술할 때 쓰인다.

 

{
	"size" : 0,
	"aggs" : {
		"avg_score" : {
			"avg" : {
				"field" : "points"
			}
		}
	}
}

 

위는 평균을 구하는 aggregation 인데 해석해보면 field 값 중에서 points 를 사용해서 평균값을 구하라는 뜻

 

elastic search 에서는 GET + Body 조합이 허용 되어 있다. 다른 브라우저 일반 웹서버(golang, nginx)는 get body 를 처리하지 않는다. 근데 elastic search 또한 GET + Body 조합을 지양한다. 저 같은 경우는 post 를 이용했다.

 

여기서 -d vs. --data-binary 의 차이는 무엇일까? 

옵션 데이터 처리 방식 용도 Content-Type
-d 개행 문자 (\n) 사용 가능 간단한 텍스트/ 폼 데이터 application/x-www-form-urlencoded
--data-binary 파일 내용을 원본 그대로 전송 JSON, binary 자유

 

내가 아래를 그대로 쳤을 때는 다음과 같은 에러가 났고

lsm@isumin-ui-MacBookPro elasticsearch % curl -XGET -k -u elastic:elastic "https://localhost:9200/_search?pretty" --data-binary @avg_points_aggs.json
{
  "error" : "Content-Type header [application/x-www-form-urlencoded] is not supported",
  "status" : 406
}

 

아래와 같이 바꾼 후에야 요청을 성공적으로 받을 수 있었다. 따라서 --data-binary 에서는

[application/x-www-form-urlencoded] 이 타입을 지원하지 않음을 알 수 있었다.

 

curl -XPOST -k -u elastic:elastic "https://localhost:9200/_search?pretty" \
  -H "Content-Type: application/json" \
  --data-binary @avg_points_aggs.json

 

그 외 실습 코드를 아래 github  에 있다.(원본파일을 fork 뜬거고 최신버전에 맞게 수정한 것도 있다.)

https://github.com/Hongmebuilding/BigData/tree/master/ch03

 

BigData/ch03 at master · Hongmebuilding/BigData

ElasticSearch 실습 자료. Contribute to Hongmebuilding/BigData development by creating an account on GitHub.

github.com

 

'ELK' 카테고리의 다른 글

[Kibana] 처음 세팅 : docker 와 kibana 세팅  (0) 2025.03.29
[ElasticSearch] bucket aggregation  (0) 2025.03.29
[ElasticSearch] search  (0) 2025.03.23
[ElasticSearch] mapping  (0) 2025.03.23
[ElasticSearch] 데이터 입력, 조회, 수정, 삭제  (0) 2025.03.23