Aggregations

donghwikim00·2025년 1월 24일

19_elastic_search

목록 보기
11/11
  • 데이터를 그룹화하거나 계산

기본 사용법

Metrics Aggregations

  • 데이터의 수치 계산
  • Sum, avg, min, max 등 사용

Bucket Aggregations

  • 데이터를 그룹화
  • Terms, range 등

Aggregation SUM

const axios = require("axios");

const url = "http://localhost:9200/test_index2/_search";

const query = {

  size: 0, // 데이터 정보를 보고싶지않고 합만 보고싶으면 사용
  aggs: {
    sum_price: {
      sum: {
        field: "price",
      },
    },
  },
};

axios
  .post(url, query)
  .then((res) => {
    // console.log(res.data);
    const jsonRes = JSON.stringify(res.data, null, 2);
    console.log(jsonRes);
  })
  .catch((err) => {
    console.error(err);
  });
  • price의 값들을 합쳐서 아래와 같이 4개의 price의 합이 value에 출력된 것을 확인할 수 있다.

Aggregation Term

  • Category.keyword로 조회 시, 키워드에 따른 카운트가 되는 것을 확인할 수 있음

  • term에 사용할 데이터 post 메서드 넣기

const axios = require("axios");

const url = "http://localhost:9200/test_index2/_doc";

const data = [
  { id: 1, name: "Product A", category: "electronics", price: 100 },
  { id: 2, name: "Product B", category: "electronics", price: 200 },
  { id: 3, name: "Product C", category: "furniture", price: 300 },
  { id: 4, name: "Product D", category: "clothing", price: 400 },
];

const addTermData = async () => {
  for (let i = 0; i < data.length; i++) {
    const res = await axios.post(`${url}/${data[i].id}`, data[i]);
    console.log(res.data);
  }
};

addTermData().catch((err) => {
  console.error(err);
});
  • category를 기준으로 분류하는 코드 작성
const axios = require("axios");

const url = "http://localhost:9200/test_index/_search";

const query = {
  size: 0, // 데이터 정보를 보고싶지않고 합만 보고싶으면 사용
  aggs: {
    categories: {
      terms: {
        field: "category.keyword",
      },
    },
  },
};

axios
  .post(url, query)
  .then((res) => {
    const jsonRes = JSON.stringify(res.data, null, 2);
    console.log(jsonRes);
  })
  .catch((err) => {
    console.error(err);
  });
  • 위 코드를 실행하면 아래 이미지처럼 카테고리별로 개수가 나옴 위 예제 2개, 1개, 1개 이런식으로 나온다.

Aggregations Date Histogram

  • Date Histogram을 테스트하기 위해 먼저 데이터를 추가
  • Sale_date 추가
  • calendar_interval: 'month’ 을 사용해 월별 그룹화 후 그룹(버킷)에 속하는 문서 개수 응답
profile
기술 블로그입니다. 여러 언어에 대한 정리, 프로젝트 설명 등을 기록합니다.

0개의 댓글