当前位置: 首页 > 知识库问答 >
问题:

如何在嵌套复合聚合中排除术语

蒯华彩
2023-03-14

我在elasticsearch中对嵌套字段使用复合聚合,但我想从结果中排除一些术语。

此聚合正在工作:

{
  "size": 0,
  "geo": {
    "communication": {
      "nested": {
        "path": "geo"
      },
      "aggs": {
        "table": {
          "composite": {
            "size": 1000,
            "sources": [
              {"stk1": {"terms": {"field": "geo.src"}}},
              {"stk2": {"terms": {"field": "geo.dest"}}}
            ]
          }
        }
      }
    }
  }
}

但是我想从stk2中排除一些术语,

{
  "size": 0,
  "aggs": {
    "geo": {
      "nested": {
        "path": "geo"
      },
      "aggs": {
        "table": {
          "composite": {
            "size": 1000,
            "sources": [
              {"stk1": {"terms": {"field": "geo.src"}}},
              {"stk2": {"terms": {"field": "geo.dest", "exclude":"cancel"}}}
            ]
          }
        }
      }
    }
  }
}

上述查询不起作用。

更新1:结果应该只省略数组元素,而不是包含“cancel”的整个文档。

我使用的是弹性v6.7

共有1个答案

江宏深
2023-03-14

我建议使用查询排除这些文档:

{
  "size": 0,
  "aggs": {
    "geo": {
      "nested": {
        "path": "geo"
      }
    },
    "aggs": {
      "filter": {
        "bool": {
          "must_not": {
            "prefix": {
              "geo.dest": "cancel"
            }
          }
        }
      },
      "aggs": {
        "table": {
          "composite": {
            "size": 10,
            "sources": [
              {
                "stk1": {
                  "terms": {
                    "field": "geo.src"
                  }
                }
              },
              {
                "stk2": {
                  "terms": {
                    "field": "geo.dest"
                  }
                }
              }
            ]
          }
        }
      }
    }
  }
}
 类似资料:
  • 我正在尝试设置一个搜索查询,该查询应通过多级嵌套字段复合聚合集合,并从该集合中提供一些子聚合指标。我能够按预期使用其存储桶获取复合聚合,但所有存储桶的子聚合指标都带有。我不确定我是否未能正确指出子聚合应考虑哪些字段,或者它是否应放置在查询的不同部分中。 我的收藏看起来类似于以下内容: 贝娄,你可以找到我已经尝试了。尽管所有文档都有一个设置的点击值,但所有存储桶都带有点击总数。 到目前为止,我的回应

  • 在这里,我得到了错误: “无效的术语聚合顺序路径[price>price>price.max]。术语桶只能在子聚合器路径上排序,该路径由路径中的零个或多个单桶聚合和路径末尾的最终单桶或度量聚合组成。子路径[price]指向非单桶聚合” 如果我按持续时间聚合排序,查询可以正常工作,如 那么,有什么方法可以通过嵌套字段上的嵌套聚合来排序聚合吗?

  • 基本上,我试图通过名字和姓氏找到重复的联系人 我错过了什么吗?任何帮助都将不胜感激。 下面是示例文档之一 我试图对Elasticsearch进行如下查询:

  • 如何聚合一个值在嵌套在Elasticsearch嵌套位置?我对一个嵌套对象没有问题,但在嵌套对象内的嵌套我感到困惑... 样本数据: 欲望结果: 在索引映射中,我将cat_a和条目字段的类型设置为嵌套,当我从工具字段查询聚合时,在cat_a的根(级别1)中没有问题,并且可以工作,但是在聚合中在rx_a(这是在第2级)我不能检索结果,它或空或显示错误,因为我的错误查询。 查询级别1 agg: 如何处

  • 我有一个索引,,我需要将其聚合到每年的桶中,然后进行排序。 我已经成功地使用Bucket Sort按简单的和值(

  • 问题内容: 我在elasticsearch(YML中的定义)中具有字段的下一个映射: 每个文档都有很多过滤器,看起来像: 我试图获取唯一过滤器名称的列表以及每个过滤器的唯一过滤器值的列表。 我的意思是,我想获得结构是怎样的:Rahmengröße: 39.5厘米 45.5厘米 33.5厘米 颜色: 盖尔布 为了得到它,我尝试了几种聚合的变体,例如: 这个请求是错误的。 它将为我返回唯一过滤器名称的