진지한 개발자

OpenSearch 기본 쿼리 본문

SQL/OpenSearch

OpenSearch 기본 쿼리

제이_엔 2024. 2. 17. 14:58
728x90

AWS OpenSearch 란

  • 오픈 소스 검색 및 분석 엔진으로, Elasticsearch의 포크 버전임
  • 검색, 로깅, 분석, 실시간 데이터 시각화 등 다양한 용도로 사용됨.
  • AWS OpenSearch는 AWS에서 호스팅되는 관리형 서비스로 제공되며, 사용자가 쉽게 확장 가능한 클라우드 기반 검색 솔루션을 구축할 수 있음
  • AWS OpenSearch는 오픈 소스이기 때문에 커스터마이징이 가능함

OpenSearch 기본 쿼리

  1. match
{
  "query": {
    "match": {
      "field_name": "search_term"
    }
  }
}
  1. range
{
  "query": {
    "range": {
      "date_field": {
        "gte": "2023-01-01",
        "lte": "2023-12-31"
      }
    }
  }
}
  1. partial match
{
  "query": {
    "wildcard": {
      "field_name": {
        "value": "*part_of_term*"
      }
    }
  }
}
  1. aggregation
{
  "aggs": {
    "agg_name": {
      "terms": {
        "field": "field_name"
      }
    }
  }
}

집계함수의 예제쿼리

  1. 항목별 개수 집계
{
  "aggs": {
    "item_count": {
      "terms": {
        "field": "item_field"
      }
    }
  }
}
  1. 범위별 값 합계 집계
{
  "aggs": {
    "total_amount": {
      "sum": {
        "field": "amount_field"
      }
    }
  }
}
  1. 날짜별 데이터 통계 집계
{
  "aggs": {
    "date_stats": {
      "date_histogram": {
        "field": "date_field",
        "interval": "month"
      },
      "aggs": {
        "total_amount": {
          "sum": {
            "field": "amount_field"
          }
        }
      }
    }
  }
}
  1. 중첩집계
복사
{
  "aggs": {
    "category_agg": {
      "terms": {
        "field": "category_field"
      },
      "aggs": {
        "avg_price": {
          "avg": {
            "field": "price_field"
          }
        }
      }
    }
  }
}
  1. 그룹별 집계
{
  "aggs": {
    "group_by_field": {
      "terms": {
        "field": "group_field"
      },
      "aggs": {
        "total_sum": {
          "sum": {
            "field": "numeric_field"
          }
        },
        "min_value": {
          "min": {
            "field": "numeric_field"
          }
        },
        "max_value": {
          "max": {
            "field": "numeric_field"
          }
        }
      }
    }
  }
}

집계함수에서 사용되는 대표속성

  1. terms: 지정된 필드의 값에 따라 결과를 그룹화합니다.
  2. sum: 지정된 숫자 필드의 합계를 계산합니다.
  3. avg: 지정된 숫자 필드의 평균을 계산합니다.
  4. min: 지정된 숫자 필드의 최소값을 찾습니다.
  5. max: 지정된 숫자 필드의 최대값을 찾습니다.
  6. stats: 지정된 숫자 필드에 대한 통계(최소값, 최대값, 합계, 평균)를 계산합니다.
  7. date_histogram: 날짜 필드를 기반으로 주어진 간격에 따라 결과를 그룹화합니다.
  8. filter: 지정된 필터 조건에 맞는 결과만을 집계합니다.
  9. range: 범위 내에 속하는 결과를 집계합니다.
  10. geo_distance: 지리적 거리를 기반으로 결과를 그룹화합니다.
  11. top_hits: 각 그룹에서 최상위 N개의 문서를 반환합니다.
728x90

'SQL > OpenSearch' 카테고리의 다른 글

OpenSearch 의 Hybrid Query  (0) 2024.02.17