BigData

[ElasticSearch] - aggregration query

IT오이시이 2014. 10. 13. 09:49
728x90

 

[ElasticSearch] - aggregration query

ElasticSearch 의 aggregration 쿼리 에 대하여 알아 봅니다.

 

 - 조회 결과의 내용을 부가적인 통계를 추출 하는데 사용하며 특정 데이터 값의 Range를 기반으로 처리 하는 예를 들어 보았습니다.

- 조회 결과에는 내용과 함께  aggregations가 나옵니다.

 

 

 

다음 예는 bucket을 기반으로 한 Range Aggregration 입니다

range aggregation

[참고] http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-aggregations-bucket-range-aggregation.html

[쿼리툴]

http://elastichammer.exploringelasticsearch.com/

1. post   : http://10.20.12.96:9200/_all/action

2. _search

3. 아래  {  "aggs" : ..... } 를 입력한다.

---------------------------------------------------------------------

 

[curl을 이용한 쿼리 ]

curl -X POST  http://10.20.12.96:9200/_all/action/_search -d '{
"aggs" : {
        "price_ranges" : {
            "range" : {
                "field" : "item.price",
                "keyed" : true,
                "ranges" : [
                        {"to" : 100000 },
                        {"from" : 100000, "to" : 500000 },
                        {"from" : 500000, "to" : 1000000 },
                        {"from" : 1000000, "to" : 1500000 },
                        {"from" : 1500000 } 
                ]
            } 
       }
    }
}';

 

-----------

Response

{
  "took": 5,
  "timed_out": false,
  "_shards": {
    "total": 25,
    "successful": 25,
    "failed": 0
  },
  "hits": {
    "total": 59,
    "max_score": 1,
    "hits": [
      {
  "_index": "cbtaction-20141010",
        "_type": "action",
        "_id": "nAVlcMWGSdqzMT3f7AZc7w",
        "_score": 1,
        "_source": {
          "action": "basket.ajax",
          "zone": "ko.seoul",
          "site": "shop.fashion",
          "uid": "user_12312312web",
          "category": "패션3",
          "category2": "여성의류",
          "category3": "트레이닝복|트레이닝 하의",
          "item": "B패치 7부 트레이닝복 트레이닝팬츠 반바지 요가바지 트레이닝바지 츄리닝 트레이닝 여성 여 자 바지",
          "item.prdno": 10121212102102,
          "item.price": 3234244,
          "item.info": "트레이닝 하의",
          "url": "http://10.20.12.52:8085/action3.html",
          "url.ref": "",
          "_key": "cbt.action.clz96",
          "@timestamp": "2014-10-10T19:31:07+09:00"
        }
      }
    ]
  },
 "aggregations": {
    "price_ranges": {
      "buckets": {
        "*-100000.0": {
          "to": 100000,
          "to_as_string": "100000.0",
          "doc_count": 0
        },
        "100000.0-500000.0": {
          "from": 100000,
          "from_as_string": "100000.0",
          "to": 500000,
          "to_as_string": "500000.0",
          "doc_count": 30
        },
        "500000.0-1000000.0": {
          "from": 500000,
          "from_as_string": "500000.0",
          "to": 1000000,
          "to_as_string": "1000000.0",
          "doc_count": 0
        },
        "1000000.0-1500000.0": {
          "from": 1000000,
          "from_as_string": "1000000.0",
          "to": 1500000,
          "to_as_string": "1500000.0",
          "doc_count": 0
        },
        "1500000.0-*": {
          "from": 1500000,
          "from_as_string": "1500000.0",
          "doc_count": 29
        }
      }
    }
  }
}

728x90
반응형