首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何处理面过滤和相应的聚集计数?

如何处理面过滤和相应的聚集计数?
EN

Stack Overflow用户
提问于 2019-03-27 12:06:55
回答 1查看 359关注 0票数 1

祝大家今天愉快。这个问题涉及多方面的搜索。

假设有两个过滤器:

2.1货物类别(1765)汽车(1566)任何其他(8675)

2.2红色(5689)绿色(156)蓝色(3599)黄色(2562)

正如我们在每个过滤器前面所看到的,它表明有多少个单元是单独存储在弹性中的。在“运费”前面打个勾。

现在的行为:

2.1货物类别(1765)汽车(0)不再(0)

2.2红色(红色货运编号)绿色(绿色货运数量)蓝色(蓝色货运数量)黄色(黄色货运数量)

你需要这样的行为:

2.1货物类别(1765)汽车(1566)任何其他(8675)

2.2红色(红色货运编号)绿色(绿色货运数量)蓝色(蓝色货运数量)黄色(黄色货运数量)

也就是说,特定字段上的筛选器不影响其聚合,而是影响所有其他字段。如何实现优化?现在为x个弹性请求实现,x等于过滤器的数目。

谨致问候

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-27 13:14:17

假设初始查询为match_all,则

2.1货物类别(1765)汽车(1566)任何其他(8675) 2.2红色(5689)绿色(156)蓝色(3599)黄色(2562)

将是:

代码语言:javascript
复制
{
  "query": {
    "match_all": {}
  },
  "aggs": {
    "CATEGORIES": {
      "terms": {
        "field": "category"
      }
    },
    "COLORS": {
      "terms": {
        "field": "color"
      }
    }
  }
}

当选择Freight时,所期望的内容将逐步解释如下:

1.筛选记录

这可以通过在category字段上使用术语查询来实现。现在,如果在聚合之前应用了此查询,则会导致问题中提到的问题。CATEGORIES方面将对Frieght进行计数,其他计数将为零。尽管COLORS方面会有预期的计数。要解决这一问题,我们可以利用过滤器。这将确保在准备聚合之后对记录进行过滤。

这就是它的工作方式:

步骤1: match_all(原始查询)

步骤2:准备聚合

步骤3:应用过滤器(预期的搜索结果)

在此基础上,我们可以得到正确的滤波结果和期望的计数CATEGORIES面,但是COLORS中的计数仍然是相同的,根据CATEGORIES方面的选择,预计会减少。下一步将修复此问题。

2.要相应更改的其他方面的计数()

为了处理这个问题,我们将使用过滤器聚合和实际聚合。我们将将post_filter应用于每个应该进行计数的其余聚合,即除CATEGORIES以外的所有聚合,在我们的示例中,这些聚合仅为COLORS

将上述两个步骤结合起来,查询如下:

代码语言:javascript
复制
{
  "query": {
    "match_all": {}
  },
  "aggs": {
    "CATEGORIES": {
      "terms": {
        "field": "category"
      }
    },
    "COLORS": {
      "filter": {
        "terms": {
          "category": [
            "Freight"
          ]
        },
        "aggs": {
          "COLORS": {
            "terms": {
              "field": "color"
            }
          }
        }
      }
    },
    "post_filter": {
      "terms": {
        "category": [
          "Freight"
        ]
      }
    }
  }
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55376813

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档