elasticsearch ElasticSearch动态桶聚合
目前,我有以下映射:elasticsearch ElasticSearch动态桶聚合,elasticsearch,mapping,aggregation,bucket,elasticsearch,Mapping,Aggregation,Bucket,目前,我有以下映射: array( 'index' => 'my_index', 'body' => array( 'mappings' => array( 'products' => array( '_source' => array('enabled' => false),
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,都有一个包含所有值的bucket。
而且只有当可见的是真的
"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
这可能吗?您是否尝试过对路径规范和字段属性.id进行嵌套术语聚合?这将创建具有不同id的存储桶,并且具有相同id的规范文档将落在相同的存储桶中。对可见性进行筛选聚合将筛选出可见性为false的所有文档。现在,您可以对值进行术语聚合,作为过滤器聚合的子聚合,以获得所需的输出。查询是什么样子的?还有,`“aggs”:{“test”:{“nested”:{“path”:“specs”}}}}}给了我:“[nested]嵌套路径[specs]不是嵌套的”我猜在你的映射中spec不必是数组,它将只有嵌套类型