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

如何执行和/或在筛选器聚合中执行

缪坚诚
2023-03-14

在https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-filter-aggregation.html我们了解到:

{
    "aggs" : {
        "t_shirts" : {
            "filter" : { "term": { "type": "t-shirt" } }
        }
    }
}

以上代码显示了我们如何为t恤添加aggs,但我们如何做到:

{
    "aggs" : {
        "t_shirts_or_shorts" : {
            "filter" : { "term": { "type": "t-shirt" } OR "term": { "type": "shorts" } }
        }
    }
}

{
    "aggs" : {
        "black_t_shirts" : {
            "filter" : { "term": { "type": "t-shirt" } AND "term": { "color": "black" } }
        }
    }
}

共有2个答案

傅兴平
2023-03-14

您可以使用bool标签组合过滤条件,就像您可以查询子句一样。您还可以检查:elasticsearch中的多个过滤器和一个聚合

冀翰翮
2023-03-14

您可以在过滤器聚合中使用“must”和“should”子句,这与查询中的相同。

问题1:

{
  "size": 0, 
  "aggs": {
    "t_shirts": {
      "filter": {
        "bool": {
          "should": [
            {
              "term": {
                "type.keyword": "t-shirt"
              }
            },
            {
              "term": {
                "type.keyword": "shorts"
              }
            }
          ]
        }
      }
    }
  }
}

问题2:

{
  "size": 0, 
  "aggs": {
    "t_shirts": {
      "filter": {
        "bool": {
          "must": [
            {
              "term": {
                "type.keyword": "t-shirt"
              }
            },
            {
              "term": {
                "color.keyword": "black"
              }
            }
          ]
        }
      }
    }
  }
}
 类似资料:
  • 我使用spring集成来处理文件的一些目录,每个文件都通过一个“流”。我希望以这样一种方式设置文件的整体处理,即文件轮询器监视一个目录(或多个目录)中的新文件。一旦轮询器拾取了一个新文件,就应该将其传递给流中的后续组件,在该组件中处理该新文件,而不保持轮询过程。处理的第二个方面是,所有新文件都要经过几个步骤,然后由聚合器根据文件数(标准在不同目录中变化)进行聚合。一旦积累了足够的文件,就可以从聚合

  • 我的JUnitRunner无法选择具有JBehave中指定的meta标记的场景。 以下是我的故事: 下面是我的运行程序文件: 当我作为JUnit test运行上述类时,没有调用带有烟雾标记的实际测试,也没有执行任何内容。 下面是我在执行上面的代码时得到的结果

  • 本文向大家介绍在MongoDB中执行聚合排序?,包括了在MongoDB中执行聚合排序?的使用技巧和注意事项,需要的朋友参考一下 您可以将method和$sort()运算符一起使用。为了理解这个概念,让我们用文档创建一个集合。使用文档创建集合的查询如下- 在method的帮助下显示集合中的所有文档。查询如下- 以下是输出- 这是对MongoDB聚合排序的查询。 情况1-每当您希望结果按降序排列时。查

  • 问题内容: 这是我第一次在Java中使用Mongo,并且此聚合查询存在一些问题。我可以在Mongo for Spring中执行一些简单的查询,并在我的Repository接口中扩展注解。知道在Spring-Data中进行长时间聚合时采用哪种方法会很有帮助。 问题答案: 您可以实现AggregationOperation 并编写自定义聚合操作查询,然后用于执行您在mongo shell中执行的任何m

  • 这是我第一次在Java中使用Mongo,这个聚合查询有一些问题。我可以在我的存储库界面中使用注释在Mongo for Spring中进行一些简单的查询,这扩展了

  • 我有如下数据: 我希望在聚合中进行过滤(因为上面的数据来自前几个阶段),以便过滤一个数组,只显示一个数组项,其中用户等于_id。 以下返回空一个数组,如何让过滤器填充一个数组,因为我期望? 其中: 将“$\u id”替换为“$$un”。“用户”显示所有数据。其中一项与预期的一样,因此问题似乎出现在$eq语句中。 如何让过滤器显示一个数组,因为我期望?