2.X/4. Aggregations

4-06-1. Filtering Queries

drscg 2017. 9. 23. 23:26

If we want to find all cars over $10,000 and also calculate the average price for those cars, we can use a constant_score query and its filter clause:

$10,000 이상의 모든 자동차와 해당 자동차들의 평균가를 계산하려면, constant_score query와 filter절을 사용할 수 있다.

GET /cars/transactions/_search
{
    "size" : 0,
    "query" : {
        "constant_score": {
            "filter": {
                "range": {
                    "price": {
                        "gte": 10000
                    }
                }
            }
        }
    },
    "aggs" : {
        "single_avg_price": {
            "avg" : { "field" : "price" }
        }
    }
}

Fundamentally, using a non-scoring query is no different from using a match query, as we discussed in the previous chapter. The query returns a certain subset of documents, and the aggregation operates on those documents. It just happens to omit scoring and may proactively cache bitsets, etc.

기본적으로, non-scoring query를 사용하는 것은, 지난 장에서 설명한 것처럼, match query를 사용하는 것과 차이가 없다. query는 document의 특정 부분집합을 반환하고, aggregation은 해당 document를 연산한다. 단지, scoring을 생략하고, 미리 bitset을 cache한다.

'2.X > 4. Aggregations' 카테고리의 다른 글

4-05. Scoping Aggregations  (0) 2017.09.24
4-06. Filtering Queries and Aggregations  (0) 2017.09.23
4-06-2. Filter Bucket  (0) 2017.09.23
4-06-3. Post Filter  (0) 2017.09.23
4-06-4. Recap  (0) 2017.09.23