要不要再翻翻文档呢?

ES Aggs 该如何根据查询结果的数量进行过滤

Elasticsearch | 作者 ezio_o | 发布于2019年10月08日 | 阅读数:4171

比如 一个User 索引 里面有100条数据, 每个user 都有tag的数组 ,其中有tag 的值为1 的 有100个user, 有tag 值为2的 有50个user, 我们按下面 语句 查询和聚合,结果希望是 tag.value 是满足 查询结果数量的,也就是  tag为1 的分桶 ,tag为2的被过滤掉
 
{
  "query": {
  "match_all": {}
  },
  "aggs": {
    "tag_aggs": {
      "nested": {
        "path": "tags"
      },
      "aggs": {
        "tag_agg": {
          "terms": {
            "field": "tag.value",
            "size": 2147483647
          }
        }
      }
    }
  }
}
已邀请:

locatelli

赞同来自: ziyou ezio_o

有可能理解得不对,但看起来bucket selector aggregation(https://www.elastic.co/guide/e ... .html)可以实现你的要求

laoyang360 - 《一本书讲透Elasticsearch》作者,Elastic认证工程师 [死磕Elasitcsearch]知识星球地址:http://t.cn/RmwM3N9;微信公众号:铭毅天下; 博客:https://elastic.blog.csdn.net

赞同来自: ezio_o

pipeline聚合就是针对结果的聚合,分为兄弟聚合和父子聚合。兄弟聚合就能满足你的要求。

要回复问题请先登录注册