【问题标题】:ElasticSearch dynamic bucket aggregationsElasticSearch 动态存储桶聚合
【发布时间】:2017-09-22 05:20:55
【问题描述】:

目前我有以下映射:

    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。

这可能吗?

【问题讨论】:

    标签: elasticsearch mapping aggregation bucket


    【解决方案1】:

    您是否尝试过对路径规范和字段 properties.id 进行嵌套术语聚合?这应该创建具有不同 id 的存储桶,并且具有相同 id 的规范文档将落入相同的存储桶中。对可见性进行过滤聚合将过滤掉所有可见性为假的文档。现在您可以对值进行术语聚合作为过滤器聚合的子聚合,以获得所需的输出。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-08
    • 2014-07-01
    • 2021-04-02
    • 1970-01-01
    • 1970-01-01
    • 2014-03-26
    相关资源
    最近更新 更多