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

ElasticSearch在嵌套属性上使用Group By聚合

孙元明
2023-03-14

我正在尝试开发一个ElasticSearch聚合查询,它根据嵌套对象中的属性执行结果的组合。

product :
{
    productName : String,
    manufacturerInfo : {
        manufacturerName : String
    }
}

将为索引设置相应的映射。

我需要的查询如下所示:

{
    "size" : 0,
    "aggs" : {
        "manufacturers" : {
            "terms" : {
                "field" : "manufacturerInfo.manufacturerName.keyword"
            }
        },
        "aggs" : {
            "productNames" : {
                "terms" : {
                    "field" : "productName.keyword"
                }
            }
        }
    }
}

查询需要按嵌套属性的名称分组,但从根对象的bin属性分组,这似乎在ElasticSearch中引起了一些麻烦。

当尝试进行以下预固化时:

"aggs" : {
    "root" : {
        "nested" : {
            "path" : "manufacturerInfo"
         }
     },
     ...
 }

此上下文似乎不允许基于产品对象的根对项目进行装箱。

ManufacturerName中指定的ManufacturerName对象对应的嵌套语法是什么?

共有1个答案

阎星河
2023-03-14

嵌套上下文:

"aggs" : {
    "root" : {
        "nested" : {
            "path" : "manufacturerInfo"
         }
     },

必须与反向_嵌套的{}-嵌套的aggs语法结合使用,该语法在引用已装箱的父对象的属性之前插入:

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

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

  • 我试图在c#中运行聚合查询(使用nest 5),但我不知道我得到了多少聚合作为输入以及聚合类型是什么。 例如,一个查询是:{"aggs":{"type_count":{"术语":{"field":"type"}}}} 其他查询将是:{“aggs”:{“type\u count”:{“terms”:{“field”:“type”}},“salary\u count”:{“field”:“salary

  • 问题内容: 我想获得一个请求数据来构建这样的东西: 首先,我在Elasticsearch上进行映射,如下所示: 然后我添加对象,如下所示。在将许多属性。如果笔记本电脑有许多端口,则每个端口都是中的另一个阵列。 现在我想要这样的结果: 我接近解决问题(我下面的查询),但在第二级聚集我所有的值(例如,在“决议”我有,和)。我想有只,并具有其他关键值,对只,以及其他价值具有关键。 问题答案: 你需要改变

  • 我看到一些关于嵌套字段和聚合的帖子,但它们似乎都没有回答我的问题。所以,如果这是一个重复的问题,请原谅,如果有任何帮助,我们将不胜感激。 我们建立了一个讲座索引,讲座具有以下特点: 讲座可以是面对面(现场)或预先录制(在线) 每个讲座可以有多个章节 这些章节中的每一个都可以由不同的讲师讲解(例如:量子物理的第一章可以由五个不同的讲师讲解,其中三个可能是现场直播,另外两个可能在线) 在线讲座每个讲师

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