Elasticsearch 基础教程

Elasticsearch 高级教程

Elasticsearch 插件

Elasticsearch 笔记

Elasticsearch FAQ

elasticsearch聚合查询


Elasticsearch 是一个开源的分布式搜索和分析引擎,它提供了强大的聚合功能,用于分析和汇总数据。下面我会为你介绍一些常用的 Elasticsearch 聚合查询语句,并附上相应的示例代码。

假设我们有一个存储商品信息的索引,每个文档包含字段: product_name (商品名称)、 category (商品类别)、 price (商品价格)、 stock (库存数量)等。

基本的聚合查询

统计某个字段的值的数量。

示例代码:

{
  "aggs": {
    "category_count": {
      "terms": {
        "field": "category"
      }
    }
  }
}

统计每个类别的商品数量和平均价格:

示例代码:

{
  "aggs": {
    "category_stats": {
      "terms": {
        "field": "category"
      },
      "aggs": {
        "avg_price": {
          "avg": {
            "field": "price"
          }
        },
        "sum_stock": {
          "sum": {
            "field": "stock"
          }
        }
      }
    }
  }
}

按价格范围划分并统计商品数量:

示例代码:

{
  "aggs": {
    "price_ranges": {
      "range": {
        "field": "price",
        "ranges": [
          {
            "to": 50
          },
          {
            "from": 50,
            "to": 100
          },
          {
            "from": 100
          }
        ]
      }
    }
  }
}

基于日期的时间范围统计

示例代码:

{
  "aggs": {
    "sales_over_time": {
      "date_histogram": {
        "field": "date",
        "calendar_interval": "month"
      },
      "aggs": {
        "total_sales": {
          "sum": {
            "field": "sales"
          }
        }
      }
    }
  }
}

嵌套聚合

按类别统计每个类别下的最高价格和最低价格。

示例代码:

{
  "aggs": {
    "category_stats": {
      "terms": {
        "field": "category"
      },
      "aggs": {
        "max_price": {
          "max": {
            "field": "price"
          }
        },
        "min_price": {
          "min": {
            "field": "price"
          }
        }
      }
    }
  }
}

这些示例代码展示了一些常用的 Elasticsearch 聚合查询语句,但实际上 Elasticsearch 还提供了许多其他聚合操作,例如百分位数、标准差等等。你可以根据你的具体需求选择合适的聚合查询来分析和汇总你的数据。

在Elasticsearch中,聚合是用于从数据中提取有关信息的功能强大的工具。###TermsAggregation(词条聚合)词条聚合用 ...
Elasticsearch 的聚合功能十分强大,可在数据上做复杂的分析统计。它提供的聚合分析功能有指标聚合(metrics aggregat ...
当有了滚动,扩展和ewm对象创建了以后,就有几种方法可以对数据执行聚合。 ...
Elasticsearch的最多使用的场景就是用它的查询API,它提供完备的查询功能以满足现实中的各种需求。如果请求中潜在的分片数量很大,则 ...
当使用Elasticsearch进行查询时,您会使用Elasticsearch查询语言(QueryDSL),它允许您构建复杂的查询以搜索和检 ...