elasticsearch - 具有范围查询的 Elasticsearch 聚合

标签 elasticsearch querydsl sense

我正在努力建立一个满足条件> = avg的ES查询。

这是一个例子:

GET /_search
{
    "size" : 0,
    "query" : {
        "filtered": {
            "filter": {
                "range": {
                    "price": {
                        "gte": {
                          "aggs" : {
                            "single_avg_price": {
                                "avg" :{ 
                                  "field" : "price" 
                                }
                              }
                            }
                          }
                }
            }
        }
    }
    }
}

我收到以下错误
"type": "query_parsing_exception",
"reason": "[range] query does not support [aggs]",

我想知道我们如何在Elastic查询中将聚合值与范围查询一起使用

最佳答案

您不能将聚合嵌入查询中。您首先需要发送聚合查询以找出平均值,然后使用获得的平均值发送第二个范围查询。

查询1:

POST /_search
{
  "size": 0,
  "aggs": {
    "single_avg_price": {
      "avg": {
        "field": "price"
      }
    }
  }
}

然后,您得到平均价格,说它是12.3,并在第二个查询中使用它,如下所示:

查询2:
POST /_search
{
  "size": 10,
  "query": {
    "filtered": {
      "filter": {
        "range": {
          "price": {
            "gte": 12.3
          }
        }
      }
    }
  }
}

关于elasticsearch - 具有范围查询的 Elasticsearch 聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36019873/

相关文章:

mongodb - QueryDsl MongoRepository 投影

java - 如何通过 ANT 任务应用 QueryDSL 数字映射?

maven - Kotlin-Kapt 注解处理器无法与 Maven 一起使用

Elasticsearch : make a should into a filter

angularjs - 如何在kibana4中为每个可视化添加关键字搜索功能

elasticsearch - 将日期转换为字符串 Elasticsearch

elasticsearch - elasticsearch-多索引搜索返回意外结果

json - Elasticsearch-Sense-索引JSON文件?

indexing - “logstash-”是kibana中索引的必需前缀吗?

elasticsearch - 在ElasticSearch中序列化RegionInfo