我的性别数据包含男、女、未知
我想知道以下查询之间的区别。它是如何计算的
{
"aggs" : {
"data" : {
"filter" : { "term": { "gender": "male" } },
"aggs" : {
"data_aggs" : {
"terms" : {
"field" : "gender"
}
}
}
}
}}
Run Code Online (Sandbox Code Playgroud)
和
{
"aggs" :{
"data" : {
"terms" :{
"field" :"gender",
"include" : "male"
}
}
}}
Run Code Online (Sandbox Code Playgroud)
在您的第一次聚合中,过滤器将仅选择字段gender恰好为 的文档子集male。然后,您的聚合将仅在选定的文档上data运行。
您的第二个聚合将在与您的查询匹配的所有文档上运行,然后terms聚合将仅返回键匹配的存储桶male。
在第一种情况下,聚合是在运行之前对数据进行预过滤。在第二种情况下,聚合正在动态过滤数据,但它将适用于所有文档,因为它必须检索所有文档中的字段才能知道性别值是否需要聚合。不言而喻,第一个聚合应该比第二个聚合更高效,特别是当您的文档库很大时。gender
| 归档时间: |
|
| 查看次数: |
1063 次 |
| 最近记录: |