[英]ElasticSearch dynamic bucket aggregations
目前,我有以下映射:
array(
'index' => 'my_index',
'body' => array(
'mappings' => array(
'products' => array(
'_source' => array('enabled' => false),
'properties' => array(
'id' => array('type' => 'integer'),
'active' => array('type' => 'boolean'),
'specs' => array(
'type' => 'nested',
'properties' => array(
'id' => array('type' => 'integer'),
'value' => array('type' => 'text'),
'visible' => array('type' => 'boolean')
)
)
)
)
)
)
);
我想查询产品。 并让ElasticSearch返回汇总的规范。 但是对于每个specs.id来说,它是一个包含所有值的存储桶。 并且仅当可见为真。
"aggregations": {
"specs_2": {
"buckets": [
{
"key": "Yes",
"doc_count": 90
},
{
"key": "No",
"doc_count": 80
},
]
},
"specs_4": {
"buckets": [
{
"key": "Yes",
"doc_count": 190
},
{
"key": "No",
"doc_count": 180
},
]
}
}
不知道数据集中的规范ID。
这可能吗?
您是否尝试过对路径规格和字段properties.id进行嵌套术语聚合? 这应该创建具有不同ID的存储桶,而具有相同ID的规范文档将属于相同存储桶。 对可见性进行过滤器聚合将过滤掉所有可见性为false的文档。 现在,您可以对值进行术语聚合,作为过滤器聚合的子聚合,以获得所需的输出。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.