You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Elasticsearch嵌套聚合逻辑调整求助:实现OR聚合+AND过滤

Elasticsearch嵌套聚合过滤逻辑问题求助

我的数据集包含productwaarden嵌套对象,数据示例如下:

文档1:

[
    {
        "zoekbaar": false,
        "waarde": "BOL",
        "naam": "Leerweg",
        "filterbaar": true
    },
    {
        "zoekbaar": false,
        "waarde": "2",
        "naam": "Foo",
        "filterbaar": true
    }
]

文档2:

[
  {
    "zoekbaar": false,
    "waarde": "BBL",
    "naam": "Leerweg",
    "filterbaar": true
  },
  {
    "zoekbaar": false,
    "waarde": "1",
    "naam": "Foo",
    "filterbaar": true
  }
]

需求说明

按naam对应的waarde过滤时,聚合需采用OR逻辑(组内),仅在naam维度使用AND逻辑。举例:

  • 选择BOL作为过滤条件时,聚合结果需同时包含BOL和BBL;
  • 仅选择BOL时,Foo对应的聚合值仅为2(文档2的1不匹配过滤条件)。

当前查询代码

{
  "aggs": {
    "productwaarden.nested": {
      "nested": {
        "path": "productwaarden"
      },
      "aggs": {
        "productwaarden.filtered": {
          "filter": {
            "bool": {
              "must": {
                "term": {
                  "productwaarden.filterbaar": true
                }
              }
            }
          },
          "aggs": {
            "naam": {
              "terms": {
                "field": "productwaarden.naam.aggregate",
                "size": 1000
              },
              "aggs": {
                "waarde": {
                  "terms": {
                    "field": "productwaarden.waarde.aggregate",
                    "size": 1000
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "query": {
    "constant_score": {
      "filter": {
        "bool": {
          "must": [
            {
              "nested": {
                "path": "productwaarden",
                "query": {
                  "bool": {
                    "must": [
                      {
                        "term": {
                          "productwaarden.naam.aggregate": "Leerweg"
                        }
                      },
                      {
                        "terms": {
                          "productwaarden.waarde.aggregate": ["BBL"]
                        }
                      }
                    ]
                  }
                }
              }
            }
          ]
        }
      }
    }
  }
}

补充说明

UI中“Leerweg”组包含BBL和BOL两个选项,选择BBL时需将其从查询结果中排除,但保留在聚合结果中,组内为OR逻辑。

内容的提问来源于stack exchange,提问作者Pim Jansen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 21:55:55