グローバル集約
検索実行コンテキスト内のすべてのドキュメントの単一バケットを定義します。このコンテキストは、検索対象のインデックスとドキュメントタイプによって定義されますが、検索クエリ自体には影響されません。
グローバル集約器は、他のバケット集約器内に埋め込むことが意味を持たないため、最上位の集約器としてのみ配置できます。
例:
Python
resp = client.search(
index="sales",
size="0",
query={
"match": {
"type": "t-shirt"
}
},
aggs={
"all_products": {
"global": {},
"aggs": {
"avg_price": {
"avg": {
"field": "price"
}
}
}
},
"t_shirts": {
"avg": {
"field": "price"
}
}
},
)
print(resp)
Ruby
response = client.search(
index: 'sales',
size: 0,
body: {
query: {
match: {
type: 't-shirt'
}
},
aggregations: {
all_products: {
global: {},
aggregations: {
avg_price: {
avg: {
field: 'price'
}
}
}
},
t_shirts: {
avg: {
field: 'price'
}
}
}
}
)
puts response
Js
const response = await client.search({
index: "sales",
size: 0,
query: {
match: {
type: "t-shirt",
},
},
aggs: {
all_products: {
global: {},
aggs: {
avg_price: {
avg: {
field: "price",
},
},
},
},
t_shirts: {
avg: {
field: "price",
},
},
},
});
console.log(response);
コンソール
POST /sales/_search?size=0
{
"query": {
"match": { "type": "t-shirt" }
},
"aggs": {
"all_products": {
"global": {},
"aggs": {
"avg_price": { "avg": { "field": "price" } }
}
},
"t_shirts": { "avg": { "field": "price" } }
}
}
global 集約は空のボディを持っています |
|
この global 集約に登録されたサブ集約 |
上記の集約は、検索コンテキスト内のすべてのドキュメントに対して集約を計算する方法を示しています(この例では avg_price
)。クエリに関係なく、カタログ内のすべての製品の平均価格を計算します(例では「シャツ」だけではなく)。
コンソール-結果
{
...
"aggregations": {
"all_products": {
"doc_count": 7,
"avg_price": {
"value": 140.71428571428572
}
},
"t_shirts": {
"value": 128.33333333333334
}
}
}
集約されたドキュメントの数(この場合、検索コンテキスト内のすべてのドキュメント) | |
インデックス内のすべての製品の平均価格 | |
すべてのTシャツの平均価格 |