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

弹性搜索嵌套聚合-文档中的方法不起作用

柳胡媚
2023-03-14

我是ES新手,正在努力解决嵌套聚合问题。这是我的虚拟数据对象([这是我的数据对象][1][1]:https://i.stack.imgur.com/X7oaM.png). 我只是想把“现代”领域的成本降到最低。

我已经阅读了以下关于我试图解决的问题的帖子。他们都没有帮助我解决问题
-弹性搜索6嵌套查询聚合-https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-nested-aggregation.html-https://madewithlove.be/elasticsearch-aggregations/-https://iridakos.com/tutorials/2018/10/22/elasticsearch-bucket-aggregations.html-https://github.com/elastic/elasticsearch/issues/9317

此外,我已经搜索了所有的堆栈溢出,但没有成功(是的,我已经尝试了几乎所有我遇到的解决方案,但都没有成功)。

根据文档和上述帖子等,应按如下方式运行嵌套聚合:

GET /loquesea/_search
{
  "size": 0,
  "aggs": {
    "modern_costs": {
      "nested": {
        "path": "modern"
      },
      "aggs": {
        "min_cost": {
          "min": {
            "field": "modern.cost1"
          }
        }
      }
    }
  }
}

然而,完成后,这就是我得到的:

{
  "took" : 1,
  "timed_out" : false,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : 3,
    "max_score" : 0.0,
    "hits" : [ ]
  },
  "aggregations" : {
    "modern_costs" : {
      "doc_count" : 0
    }
  }
}

我花了几个小时试图让一个基本的嵌套聚合工作。我做错了什么?

共有1个答案

百里渊
2023-03-14

问题解决了。事实证明,由于我没有在映射中将“cars”的类型声明为“nested”,因此嵌套聚合将无法工作。原因是,在弹性搜索中,由于类型未声明为“嵌套”,ES将“cars”视为对象

 类似资料:
  • Elasticsearch版本:2.3.3 基本上,标题说明了一切。如果二个嵌套聚合下使用reverse_nested,尽管文档似乎通过限定范围(请参阅结果中的最后一个字段),但其后面的聚合不会以某种方式工作。 这里我准备了一个例子——一个文档是一个学生的注册日期和考试历史。 映射: 试验文件: 聚合查询(无实际意义): 结果是: ...您可以在其中看到聚合“newest_exam_date”不起

  • 我已经为一个问题挣扎了一段时间,所以我想我应该通过stackoverflow来解决这个问题。 “我的文档类型”有一个标题、一个语言字段(用于筛选)和一个分组id字段(我省略了所有其他字段以保持重点) 搜索文档时,我希望找到包含标题中文本的所有文档。对于每个唯一的分组id,我只需要一个文档。 我一直在关注tophits聚合,从我所看到的情况来看,它应该能够解决我的问题。 对我的索引运行此查询时: 我

  • 我在Elasticsearch中获得了大量数据。我的douments有一个名为“records”的嵌套字段,它包含一个包含多个字段的对象列表。 我希望能够从记录列表中查询特定的对象,因此我在查询中使用了inner_hits字段,但是这没有帮助,因为聚合使用大小0,所以没有返回结果。 我没有成功地使一个聚集只对inner_hits有效,因为无论查询是什么,聚集都返回记录中所有对象的结果。 这是我正在

  • 我正在使用聚合来根据其他字段的总和对一个字段进行分组。 它正在工作,但输出与我从数据库查询得到的结果不相似。 ES查询: 输出: "domain_agg":{"doc_count_error_upper_bound": 9,"sum_other_doc_count": 1442,"存储桶": [ { "key":"doc_count","doc_count": 2,"domain_store_co

  • 尝试排除其中一个子文档与查询不匹配的顶级文档。 对于下面的示例,我试图排除其中一个嵌套作业具有并且与匹配的所有文档。但是,由于其中一个嵌套作业文档与和公司匹配,因此返回此文档。我使用的是一个嵌套查询,其中公司名称必须匹配,并且过滤器的当前值为false。我如何才能使以下文件不被退回?

  • 我有几个产品的变化,像下面的一个 我正在寻找一个具有以下所有参数的查询 获取某个类别中的所有产品 获取所有黑色的产品 获取尺寸l和M 我当前的查询: 它的工作很好,如果我只搜索1个大小。但是一旦我搜索了2个尺寸,它就不会给出任何记录。我的猜测是,它在每个嵌套变体中寻找所有3个参数,显然它找不到。如何修改要搜索的查询 null 我的第二个问题: