elasticsearch - 字符串字段上的 Elastic Search 最大值

标签 elasticsearch

在 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 执行最大值,因为它是一个字符串。除了更多聚合之外,还有其他方法可以做到这一点吗?

最佳答案

如果您想为每个作者找到不同的书名,也许您应该尝试在“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 中所述.

关于elasticsearch - 字符串字段上的 Elastic Search 最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33872216/

相关文章:

elasticsearch - 使用组对聚合进行分区

variables - 将字符串转换为在logstash中 float

java - Elasticsearch 扩展内部文档数组

elasticsearch - Elasticsearch 查询以基于父ID获取最新的子文档

authentication - 使用JSON Web token 授权Grafana/Elasticsearch请求?

elasticsearch - 在Elasticsearch中删除文档的内部原理

java - 从 Elasticsearch 中获取索引名称匹配模式的列表 - JAVA

elasticsearch - AWS ElasticSearch域创建权限

indexing - Logstash 未将数据从外部文件写入Elasticsearch

performance - 优化elasticsearch/JVM