NoSQL/ElasticSearch

ElasticSearch에서 여러 필드 GroupBy 하는법

ghyeong 2022. 4. 7. 17:43
반응형

만약 엘라스틱 서치에서 RDBMS에서 처럼 GroupBy로 묶으려면 해당 필드를 subAggregation형태로 쿼리DSL을 만들어 주면 된다.

 

<예시>

SQL

SELECT 
	*
FROM 
	example
WHERE
	wantField = 3
GROUP BY
	field1,
	field2,
	field3

 

<예시>

Query DSL 

GET example*/_search?
{
  "size": 0,
  "query": {
    "bool": {
      "filter": [
        {
          "term": {
            "wantField": {
              "value": 3,
              "boost": 1
            }
          }
        }
      ],
      "adjust_pure_negative": true,
      "boost": 1
    }
  },
  "aggs": {
    "agg1": {
      "terms": {
        "field": "field1"
      },
      "aggs": {
        "agg2": {
          "terms": {
            "field": "field2"
          },
          "aggs": {
            "agg3": {
              "terms": {
                "field": "field3"
              }
            }
          }
        }
      }
    }
  }
}

 

반응형