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 |