首页 > 解决方案 > 使用元素数组上的过滤器进行 Elasticsearch 计数值聚合

问题描述

我想通过过滤 IsDeleted = false 上的条目来计算元素数组的唯一“pId”值。这是一个索引条目:

{
"_index": "partenaires",
"_type": "_doc",
"_id": "11",
"_version": 1,
"_seq_no": 1,
"_primary_term": 1,
"found": true,
"_source": {
    "Id": 11,
    "tiers": [
        {
            "pId": 2011,
            "IsDeleted": false
        },
        {
            "pId": 10008,
            "IsDeleted": true
        },
        {
            "pId": 255797,
            "IsDeleted": false
        },
        {
            "pId": 133500,
            "IsDeleted": true
        },
        {
            "pId": 149354,
            "IsDeleted": true
        }
    ],
    "@version": "1",
    "@timestamp": "2021-07-06T15:04:25.960Z"
}
}

我尝试使用 count_value 来检索唯一 pID 的数量,但如何过滤 IsDeleted 字段?

{
    "query": {
        "bool": {
            "must": [
                {
                    "match": {
                        "pId": "152490"
                    }
                }
            ]
        }
    },
    "size": 10000,
    "aggs": {
        "sum_tiers": {
            "value_count": {
                "field": "tiers.pId"
            }
        }
    }
}

标签: elasticsearchelasticsearch-aggregation

解决方案


推荐阅读