【问题标题】:Elastic Search max on string fields字符串字段的弹性搜索最大值
【发布时间】:2015-11-23 22:16:47
【问题描述】:

在 SQL 中,可以对字符串字段使用 MAX() 来获得不同的值(假设分组依据是正确的)。

但是,这在 ElasticSearch 中是不可能的,因为 MAX 仅适用于数字字段。但是我想在聚合后检索一些字符串字段的值,以便显示这些值。

例如假设一个通用的书籍结构

{
  "aggs" : {
     "group_by_author" : { "terms" : { "field" : "author"},
     "aggs" : { 
      "books_published" : { "sum" : { "field" : "name"}},
      "distinct_title" : { "max" : {"field" : "some_relevant_field_name"}}
    }
  }
  }
}

这里我不能对 some_relevant_field_name 执行最大值,因为它是一个字符串。除了更多的聚合之外,还有其他方法可以做到这一点吗?

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    如果您想为每个作者找到不同的书名,也许您应该尝试在“distinct_title”字段中使用“terms”聚合:

    {
        "aggs":{
            "group_by_author":{
                "terms":{
                    "field":"author"
                },
                "aggs":{
                    "books_published":{
                        "sum":{
                            "field":"name"
                        }
                    },
                    "distinct_title":{
                        "terms":{
                            "field":"some_relevant_field_name"
                        }
                    }
                }
            }
        }   
    }
    

    它应该为每个作者创建书名桶,如documentation 中所述。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-13
      • 2021-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多