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

弹性搜索中相同类型的多个字段上的平均值或任何其他聚合

储国发
2023-03-14

我无法编写请求主体来获取弹性搜索中多个字段上的平均聚合。

我有两个字段field1和field2都是“double”数据类型。我能够获取单个字段的平均聚合。

这适用于单个字段:

"aggs" : {
        "AvgValuesOfField1" : {
            "avg" : {
                "field" : "field1"
            }
        }
  }

和两个字段(给出错误)

"aggs" : {
        "AvgValuesOfField1" : {
            "avg" : {
                "field" : "field1"
            }
        },
        "aggs" : {
            "AvgValuesOfField2" : {
            "avg" : {
                "field" : "field2"
            }
        }
        }
  }

我收到的错误是“类型为[avg]的聚合器[group\U By\U field1]无法接受子聚合”“无法解析名为[AVGVALUESOFCITEMPIDE]的BaseAgregationBuilder:找不到解析器”

我需要的输出是DB中存在的所有文档上两个字段的平均值。我正在使用弹性DB v6.8有任何建议吗?提前谢谢

共有1个答案

文喜
2023-03-14

对于单独的聚合,您可以执行如下操作,您不需要再次编写aggs-这是针对嵌套聚合的:

{
  "aggs": {
    "AvgValuesOfField1": {
      "avg": {
        "field": "field1"
      }
    },
    "AvgValuesOfField2": {
      "avg": {
        "field": "field2"
      }
    }
  }
 类似资料:
  • 问题内容: 有什么方法可以根据类型在同一字段上搜索结果? 我的基本提升是这样的: 但是对于其他一些文档,我希望标题不太重要,因此我尝试使用type作为前缀: 但是,这根本没有助益。作为最后的选择,我可以使用Funcsion / Script Score bu来避免这种情况。 例如,假设文档仅包含字段。 问题答案: 实现此目的的一种简单方法是将OP中的查询重写为dis- max查询 。 elasti

  • 问题内容: 我有两个索引和。在这些索引中,我具有以下文档类型: : 人 组织机构 角色 技能 : 产品展示 服务 专利 商标 服务标记 每种类型都有不同的字段。 我的问题: 在任何类型的任何字段中,跨一个或什至两个索引查询字符串“ abc”的最佳方法是什么? 我没有在文档中找到任何有助于这种搜索的内容。是否有可能看起来像: 预先感谢您提供的任何帮助。 问题答案: 无论是查询或查询将是你在找什么。

  • 我有一些这样的文档: 我写了一个搜索相似度的查询...我正在尝试对它进行排序,这样就不会有两个相同的< code>myField值相邻出现。 我希望的所有不同值出现在结果的顶部,然后出现重复的值。 我正在寻找的是一个高级排序查询,如果文档的字段已经出现在结果中,则该查询会降低文档的分数。 根据我的例子,我希望我的结果是: 高相关性字段出现在结果的底部,因为值已经出现在顶部,而其他字段对我来说更重要

  • 我试图为一个业务场景制定一个查询,其中我们有一个名为“types”的嵌套字段类型(即类似于字符串的ArrayList)。下面是以“类型”作为字段之一的索引文档示例。 文件1:{“类型”:[{“标签”:“对话”,},{“标签”:“暴力”,},{“标签”:“语言”,}} 文档2:{“类型”:[{“标签”:“对话框”,}} 现在,要求搜索查询最多匹配字段值中的一个值,即如果用户搜索“对话框”,那么它应该

  • 如何在elasticsearch中使用与聚合相关的过滤器? 官方文档只给出了过滤器和聚合的小例子,没有对查询dsl进行正式描述——例如,将其与postgres文档进行比较。 通过尝试,我发现以下查询被elasticsearch接受(没有解析错误),但忽略了给定的过滤器: 有些人建议使用查询而不是过滤。但官方文件通常建议对精确值进行过滤。查询的另一个问题是:虽然过滤器提供了和,但查询不提供。 有人能

  • 在弹性搜索中,如果我有属性为Foo的文档,比如Bar和其他一系列属性。 我需要以这样的方式查询,我得到的结果在下面的方式 基本上,我需要doc\u count的所有可用组合。使用该结果,可以说,如果Foo=foo1,Bar=bar1,Baz=baz1,Qux=qux1,则有20个文档/记录 粗暴的方式是,使用聚合内部的聚合(在这种情况下为4次)。 应该有更简单的方法来做到这一点。 提前感谢