Elasticsearch5.2.2进行数据聚合测试

《再也不怕elasticsearch》es聚合使用与原理剖析 还不会es的复杂查询?点进来! 阅读详情

我们将学习各种聚合以及它们的语法,但是最好的学习方法还是通过例子。一旦你了解了如何思考聚合以及如何对它们进行合适的嵌套,那么语法本身是不难的。

让我们从一个例子开始。我们会建立一个也许对汽车交易商有所用处的聚合。数据是关于汽车交易的:汽车型号,制造商,销售价格,销售时间以及一些其他的相关数据。

首先,通过批量索引(Bulk-Index)来添加一些数据:

POST /cars/transactions/_bulk
{ "index": {}}
{ "price" : 10000, "color" : "red", "make" : "honda", "sold" : "2014-10-28" }
{ "index": {}}
{ "price" : 20000, "color" : "red", "make" : "honda", "sold" : "2014-11-05" }
{ "index": {}}
{ "price" : 30000, "color" : "green", "make" : "ford", "sold" : "2014-05-18" }
{ "index": {}}
{ "price" : 15000, "color" : "blue", "make" : "toyota", "sold" : "2014-07-02" }
{ "index": {}}
{ "price" : 12000, "color" : "green", "make" : "toyota", "sold" : "2014-08-19" }
{ "index": {}}
{ "price" : 20000, "color" : "red", "make" : "honda", "sold" : "2014-11-05" }
{ "index": {}}
{ "price" : 80000, "color" : "red", "make" : "bmw", "sold" : "2014-01-01" }
{ "index": {}}
{ "price" : 25000, "color" : "blue", "make" : "ford", "sold" : "2014-02-12" }

现在我们有了一些数据,来创建一个聚合吧。一个汽车交易商也许希望知道哪种颜色的车卖的最好。这可以通过一个简单的聚合完成。使用terms桶:

GET  /cars/transactions/_search
{
    "aggs": {
        "colors": {
            "terms": {
                "field": "color"
            }
        }
    },
    "size": 0
}

因为我们并不关心搜索结果,使用的"size": 0。聚合工作在顶层的aggs参数下(当然你也可以使用更长的aggregations)。 然后给这个聚合起了一个名字:colors。 最后,我们定义了一个terms类型的桶,它针对color字段。

聚合是以搜索结果为上下文而执行的,这意味着它是搜索请求(比如,使用/_search端点)中的另一个顶层参数(Top-level Parameter)。聚合可以和查询同时使用,这一点我们在后续的范围聚合(Scoping Aggregations)中介绍。

接下来我们为聚合起一个名字。命名规则是有你决定的; 聚合的响应会被该名字标记,因此在应用中你就能够根据名字来得到聚合结果,并对它们进行操作了。

然后,我们开始定义聚合本身。比如,我们定义了一个terms类型的桶。terms桶会动态地为每一个它遇到的不重复的词条创建一个新的桶。因为我们针对的是color字段,那么terms桶会动态地为每种颜色创建一个新桶。

如果执行出现报错,搜了一下应该是5.x后对排序,聚合这些操作用单独的数据结构(fielddata)缓存到内存里了,需要单独开启,简单来说就是在聚合前执行如下操作

PUT cars/_mapping/transactions
{
  "properties": {
    "color": { 
      "type":     "text",
      "fielddata": true
    }
  }
}

PUT cars/_mapping/transactions
{
  "properties": {
    "make": { 
      "type":     "text",
      "fielddata": true
    }
  }
}

让我们执行该聚合来看看其结果:
这里写图片描述

因为我们使用的"size": 0,所以没有搜索结果被返回。 每个桶中的key对应的是在color字段中找到的不重复的词条。它同时也包含了一个doc_count,用来表示包含了该词条的文档数量。

响应包含了一个桶列表,每个桶都对应着一个不重复的颜色(比如,红色或者绿色)。每个桶也包含了“掉入”该桶中的文档数量。比如,有4辆红色的车。

前面的例子是完全实时(Real-Time)的:如果文档是可搜索的,那么它们就能够被聚合。这意味着你能够将拿到的聚合结果置入到一个图形库中来生成实时的仪表板(Dashboard)。一旦你卖出了一台银色汽车,在图形上关于银色汽车的统计数据就会被动态地更新。


添加一个指标(Metric)

从前面的例子中,我们可以知道每个桶中的文档数量。但是,通常我们的应用会需要基于那些文档的更加复杂的指标(Metric)。比如,每个桶中的汽车的平均价格是多少?

为了得到该信息,我们得告诉ES需要为哪些字段计算哪些指标。这需要将指标嵌套到桶中。指标会基于桶中的文档的值来计算相应的统计信息。

让我们添加一个计算平均值的指标:

GET /cars/transactions/_search
{
   "aggs": 
   {
      "colors": 
      {
         "terms": 
         {
            "field": "color"
         },
         "aggs": 
         { 
            "avg_price": 
            { 
               "avg": {
                  "field": "price" 
               }
            }
         }
      }
   },
   "size": 0
}

我们添加了一个新的aggs层级来包含该指标。然后给该指标起了一个名字:avg_price。最后定义了该指标作用的字段为price。.

正如你所看到的,我们向前面的例子中添加了一个新的aggs层级。这个新的聚合层级能够让我们将avg指标嵌套在terms桶中。这意味着我们能为每种颜色都计算一个平均值。

同样的,我们需要给指标起一个名(avg_price)来让我们能够在将来得到其值。最后,我们指定了指标本身(avg)以及该指标作用的字段(price):
这里写图片描述

现在,在响应中多了一个avg_price元素。

尽管得到的响应只是稍稍有些变化,但是获得的数据增加的了许多。之前我们只知道有4辆红色汽车。现在我们知道了红色汽车的平均价格是32500刀。这些数据你可以直接插入到报表中。

桶中的桶(Buckets inside Buckets)

当你开始使用不同的嵌套模式时,聚合强大的能力才会显现出来。在前面的例子中,我们已经知道了如何将一个指标嵌套进一个桶的,它的功能已经十分强大了。

但是真正激动人心的分析功能来源于嵌套在其它桶中的桶。现在,让我们来看看如何找到每种颜色的汽车的制造商分布信息:

GET /cars/transactions/_search
{
   "aggs": 
   {
      "colors": {
         "terms": {
            "field": "color"
         },
         "aggs": 
         {
            "avg_price": { 
               "avg": {
                  "field": "price"
               }
            },
            "make": { 
                "terms": {
                    "field": "make" 
                }
            }
         } 
      }
   },
   "size": 0
}

此时发生了一些有意思的事情。首先,你会注意到前面的avg_price指标完全没有变化。一个聚合的每个层级都能够拥有多个指标或者桶。avg_price指标告诉了我们每种汽车颜色的平均价格。为每种颜色创建的桶和指标是各自独立的。

这个性质对你的应用而言是很重要的,因为你经常需要收集一些互相关联却又完全不同的指标。聚合能够让你对数据遍历一次就得到所有需要的信息。

另外一件重要的事情是添加了新聚合make,它是一个terms类型的桶(嵌套在名为colors的terms桶中)。这意味着我们会根据数据集创建不重复的(color, make)组合。

让我们来看看得到的响应:

{
  "took": 12,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "failed": 0
  },
  "hits": {
    "total": 8,
    "max_score": 0,
    "hits": []
  },
  "aggregations": {
    "colors": {
      "doc_count_error_upper_bound": 0,
      "sum_other_doc_count": 0,
      "buckets": [
        {
          "key": "red",
          "doc_count": 4,
          "avg_price": {
            "value": 32500
          },
          "make": {
            "doc_count_error_upper_bound": 0,
            "sum_other_doc_count": 0,
            "buckets": [
              {
                "key": "honda",
                "doc_count": 3
              },
              {
                "key": "bmw",
                "doc_count": 1
              }
            ]
          }
        },
        {
          "key": "blue",
          "doc_count": 2,
          "avg_price": {
            "value": 20000
          },
          "make": {
            "doc_count_error_upper_bound": 0,
            "sum_other_doc_count": 0,
            "buckets": [
              {
                "key": "ford",
                "doc_count": 1
              },
              {
                "key": "toyota",
                "doc_count": 1
              }
            ]
          }
        },
        {
          "key": "green",
          "doc_count": 2,
          "avg_price": {
            "value": 21000
          },
          "make": {
            "doc_count_error_upper_bound": 0,
            "sum_other_doc_count": 0,
            "buckets": [
              {
                "key": "ford",
                "doc_count": 1
              },
              {
                "key": "toyota",
                "doc_count": 1
              }
            ]
          }
        }
      ]
    }
  }
}

该响应告诉了我们如下信息:

有4辆红色汽车。
红色汽车的平均价格是32500美刀。
红色汽车中的3辆是Honda,1辆是BMW。

最后的一个修改(One Final Modification)

在继续讨论新的话题前,为了把问题讲清楚让我们对该例子进行最后一个修改。为每个制造商添加两个指标来计算最低和最高价格:

GET /cars/transactions/_search
{
   "aggs": {
      "colors": {
         "terms": {
            "field": "color"
         },
         "aggs": {
            "avg_price": { "avg": { "field": "price" }
            },
            "make" : {
                "terms" : {
                    "field" : "make"
                },
                "aggs" : { 
                    "min_price" : { "min": { "field": "price"} }, 
                    "max_price" : { "max": { "field": "price"} } 
                }
            }
         }
      }
   },
   "size": 0
}

我们需要添加另一个aggs层级来进行对min和max的嵌套。
得到的响应如下:

{
  "took": 23,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "failed": 0
  },
  "hits": {
    "total": 8,
    "max_score": 0,
    "hits": []
  },
  "aggregations": {
    "colors": {
      "doc_count_error_upper_bound": 0,
      "sum_other_doc_count": 0,
      "buckets": [
        {
          "key": "red",
          "doc_count": 4,
          "avg_price": {
            "value": 32500
          },
          "make": {
            "doc_count_error_upper_bound": 0,
            "sum_other_doc_count": 0,
            "buckets": [
              {
                "key": "honda",
                "doc_count": 3,
                "max_price": {
                  "value": 20000
                },
                "min_price": {
                  "value": 10000
                }
              },
              {
                "key": "bmw",
                "doc_count": 1,
                "max_price": {
                  "value": 80000
                },
                "min_price": {
                  "value": 80000
                }
              }
            ]
          }
        },
        {
          "key": "blue",
          "doc_count": 2,
          "avg_price": {
            "value": 20000
          },
          "make": {
            "doc_count_error_upper_bound": 0,
            "sum_other_doc_count": 0,
            "buckets": [
              {
                "key": "ford",
                "doc_count": 1,
                "max_price": {
                  "value": 25000
                },
                "min_price": {
                  "value": 25000
                }
              },
              {
                "key": "toyota",
                "doc_count": 1,
                "max_price": {
                  "value": 15000
                },
                "min_price": {
                  "value": 15000
                }
              }
            ]
          }
        },
        {
          "key": "green",
          "doc_count": 2,
          "avg_price": {
            "value": 21000
          },
          "make": {
            "doc_count_error_upper_bound": 0,
            "sum_other_doc_count": 0,
            "buckets": [
              {
                "key": "ford",
                "doc_count": 1,
                "max_price": {
                  "value": 30000
                },
                "min_price": {
                  "value": 30000
                }
              },
              {
                "key": "toyota",
                "doc_count": 1,
                "max_price": {
                  "value": 12000
                },
                "min_price": {
                  "value": 12000
                }
              }
            ]
          }
        }
      ]
    }
  }
}

在每个make桶下,多了min和max的指标。

此时,我们可以得到如下信息:

有4辆红色汽车。
红色汽车的平均价格是32500美刀。
红色汽车中的3辆是Honda,1辆是BMW。
红色Honda汽车中,最便宜的价格为10000美刀。
最贵的红色Honda汽车为20000美刀。
springboot+elasticsearch实现一个搜索引擎的功能 springboot+elasticsearch实现一个搜索引擎的功能 一、elasticsearch的安装 ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。(如何安装elasticsearc... 阅读详情

相关推荐

【elasticsearch】ES的JAVA工具类完整版(已完成,已测试)

当你制作好一个java类,并且把属性的类型都规范好,这时候可直接通过该方法创建索引,如果该类中有数组类型的属性,则需要指定 nestedFields 参数的属性名,否则在插入数据后悔发现,该数组类型的es中的type不是 nested类型。solution 便是数组类型,无论List的泛型是基本类型,还是包装类型,在es中都需要指定该字段是【nested】。通过es控制台或者postman都可以进行索引操作,类型mysql可视化工具对mysql数据库表结构操作类型,只不过,不解释了,没啥好说的。

Timeguys的专栏 2888

mock junit test elasticsearch SearchResponse

mock 测试 elasticsearch SearchResponse searchResponse = mock(SearchResponse.class); SearchResponse scrollResponse = mock(SearchResponse.class); when(analysisRestClient.search(any(), Mockito.any(RequestOptions.class))).thenReturn(searchResponse); SearchHits s

极客编程的专栏 2220

ElasticSearch 数据聚合与运算

ElasticSearch 数据聚合与运算

Jason World 1220

[Elasticsearch] 聚合的测试数据

本章翻译自Elasticsearch官方指南的Aggregation Test-Drive一章。 聚合的测试数据(Aggregation Test-Drive) 我们将学习各种聚合以及它们的语法,但是最好的学习方法还是通过例子。一旦你了解了如何思考聚合以及如何对它们进行合适的嵌套,那么语法本身是不难的。 让我们从一个例子开始。我们会建立一个也许对汽车交易商有所用处

不忘初心,好好沉淀 4万+

【Elasticsearch】es脚本编程使用详解

es脚本编程使用详解

congge 6513

elasticmock:用于测试目的的Python Elasticsearch Mock

弹性模拟 用于测试目的的Python Elasticsearch Mock 安装 pip install ElasticMock 用法 要使用ElasticMock,请使用@elasticmock装饰器装饰您的测试方法: from unittest import TestCase from elasticmock import elasticmock class TestClass ( TestCase ): @ elasticmock def test_should_return_something_from_elasticsearch ( self ): self . assertIsNotNone ( some_function_that_uses_elasticsearch ()) 自定义行为 您还可以通过导入elasticmock.behavio

ElasticMock 开源项目安装与使用教程

ElasticMock 开源项目安装与使用教程 1. 项目目录结构及介绍 ElasticMock 是一个用于测试目的的 Python Elasticsearch 模拟器。下面是其基本的目录结构和关键文件介绍: elasticmock/ ├── elasticmock/ <- 主要代码库 │ ├── __init__.py <- 初始化模块,定义主要类和函数 │...

gitblog_00061的博客 378

stackelberg博弈_博弈论、多智能体、强化学习(随便记点东西)

多智能体应用场景:已实现:游戏AI。正在努力:UAV,物资运输,快递分发,交通系统。未来:社会学,预测群体行为,城市区域合作,国际关系。博弈论基本定义:玩家集合: 策略集合: 收益函数: 囚徒困境:两智能体矩阵博弈坦白抵赖坦白1,13,0抵赖0,32,2占优策略与最佳应对:上表中两者均具有占优策略,即无论如何都应该选坦白。那么构造下表。坦白抵赖坦白1,13,0抵赖0,12,2对于玩家一来说,坦白...

weixin_39611722的博客 2994

elasticsearch-mocksolrplugin编译测试

https://github.com/mattweber/elasticsearch-mocksolrplugin 下载源码,通过eclipse导入maven工程。maven库更新后 co.diji.rest.SolrUpdateHandlerRestAction 类有错误,可能是r...

chenggua8561的博客 266

XC7Z010-1CLG400C开发板ADC引脚配置全攻略(附完整引脚列表)

本文详细解析了XC7Z010-1CLG400C开发板的ADC引脚配置方法,涵盖XADC模块基础、CLG400封装的引脚布局、硬件设计规范及Vivado工程配置实战。特别提供了完整的引脚列表和性能优化技巧,帮助开发者高效实现模拟信号采集,适用于Zynq-7000系列开发。

weixin_29188043的博客 465

手把手教你排查I2C通信故障:当上拉电阻配置不当会发生什么?

本文深入解析I2C通信中上拉电阻配置不当导致的常见故障,包括波形畸变和通信失败现象。通过示波器波形分析和系统化解决方案,帮助工程师快速诊断和优化I2C总线性能,特别适用于嵌入式系统和智能设备开发场景。

weixin_33725722的博客 340

ES7SpringDataElasticsearch配置 最完整的springboot2.2.x.RELEASE整合springDataElasticsearch Elasticsea

本文使用内容 springBoot2.2.5.RELEASE版本 Elasticsearch7.6.2 linux版本的 SpringDataElasticSearch与Springboot版本对应 一、操作准备 1、导入依赖 此处版本 2.2.5.RELEASE <parent> <groupId>org.springframework.boot</groupId> <artifactId>spr...

BaldHead`s 1478

cocos creator接入微信登陆sdk ios篇

cocos creator接入微信登陆sdk ios篇 背景已经在Android篇里面交代过了,有兴趣的朋友可以再看看Android篇 步骤 去微信开放平台下载ios平台所需要的sdk 在“info”标签栏的“URL type“添加“URL scheme”为你所注册的应用程序id 在“info”标签栏的“LSApplicationQueriesSchemes“添加weixin 将SDK文件中...

凤小鹿的博客 6362

ClickHouse 填平 Elasticsearch 护城河?日志分析新选择!

ClickHouse 现已集成全文搜索功能,结合其强大的分析引擎,一站式解决日志搜索与聚合需求。Elasticsearch 在日志分析领域的“护城河”已然消失。

ClickHouseDB的博客 340

Codex 100个真实案例 - 用AI做英语单词计划学习工具(记忆曲线+测验)

背单词是英语学习的基本功,但市面上的背单词 APP 要么收费、要么广告太多。本案例用 Codex 从零打造一个 **英语单词计划学习工具**,实现 SM-2 间隔重复算法(Anki 的核心算法)、单词本增删改查、多种测验模式(选择题/拼写/听写)、TTS 发音播放,以及学习数据的可视化统计图表。全程用自然语言驱动 Codex,用 Python 写后端逻辑 + 终端 UI,打造你的私人背单词助手!

yueyeguzhuo的专栏 191

15、目标检测模型的评估指标与YOLO算法解析

本文详细解析了目标检测模型的评估指标,包括精确率、召回率、AP、mAP及IoU的定义与作用,并深入介绍了YOLO算法的核心原理与推理流程。从网格划分、锚框引入到边界框细化与后处理,全面阐述了YOLO如何实现快速准确的目标检测。同时总结了YOLO在智能安防、自动驾驶和工业检测等领域的应用,并展望了其未来在准确性提升、多类别支持和技术融合方面的发展趋势。

work3的博客 64

ElasticSearch分布式搜索引擎

elasticsearch结合kibana、Logstash、Beats,也就是elastic stack(ELK)。被广泛应用在日志数据分析、实时监控等领域: 而elasticsearch是elastic stack的核心,负责存储、搜索、分析数据。elasticsearch底层是基于lucene来实现的。Lucene是一个Java语言的搜索引擎类库,是Apache公司的顶级项目,由DougCutting于1999年研发。官网地址:https://lucene.apache.org/ 。elasticse

我的博客 2452

SPV1050低功耗微功率太阳能充电管理模块原理图设计,已量产

在物联网应用快速普及的今天,户外低功耗传感器(如土壤温湿度、环境光照、无线节点等)的供电始终是行业痛点 —— 传统锂电池不仅需要定期更换,维护成本高,还难以满足 “终身免维护” 的场景需求。为此,我们设计了一款专为 1V~3V 低电压小型太阳能板优化的微功率太阳能电源管理模块,结合 USB 备用充电路径,实现了低功耗传感器的长期自主供电。

不脱发的程序猿 443

elasticsearch(ES)分布式搜索引擎04——(数据聚合,自动补全,数据同步,ES集群)

默认的拼音分词器会将每个汉字单独分为拼音,而我们希望的是每个词条形成一组拼音,需要对拼音分词器做个性化定制,形成自定义分词器。character filters:在tokenizer之前对文本进行处理。例如删除字符、替换字符tokenizer:将文本按照一定的规则切割成词条(term)。例如keyword,就是不分词;还有ik_smarttokenizer filter:将tokenizer输出的词条做进一步处理。

qq_59708493的博客 2124

核心面试聚焦:业务问题+系统问题+设计题---字节、阿里、美团等整理统计

业务系统及其他相关面试问题整理:线上相关问题排查+高并发系统的限流+高并发秒杀系统设计+负载均衡+一个网站有 20 亿 url 存在一个黑名单中,这个黑名单要怎么存?若此时随便输入一个 url,你如何快速判断该 url 是否在这个黑名单中?并且需在给定内存空间(比如:500M)内快速判断出?

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 172万+

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

实战精讲:如何在Elasticsearch中进行数据的聚合分析

Elasticsearch聚合分析:是ES除搜索外最核心的能力,指对检索到的数据进行分组、统计、计算、求和、平均值、最大值、最小值、百分位等分析操作,等价于MySQL中的GROUP BY+聚合函数,但性能远超传统数据库,千万级数据可秒级出统计结果。搜索是找数据,聚合是算数据。对字段进行数值计算,不分组,直接输出统计结果。按照字段值、范围、日期、关键词对数据分组。先分组(Bucket),再对每组数据计算指标(Metric),是工作中最常用的聚合方式。聚合类型关键字作用场景指标聚合sum求和。

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 3307

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

ElasticSearch内容分享(四):ES搜索引擎

但是elasticsearch将来一定是集群,例如我集群有5个节点,我要查询TOP1000的数据,并不是每个节点查询200条就可以了。那每个节点都要查询10000条?因此要想获取整个集群的TOP1000,必须先查询出每个节点的TOP1000,汇总结果后,重新排名,重新截取TOP1000。可以看到,API与其它查询的差别同样是在查询条件的构建,QueryBuilders,结果解析等其他代码完全不变。每一个不同的字段,其查询的条件、方式都不一样,必须是多个不同的查询,而要组合这些查询,就必须用bool查询了。

之乎者也·的博客 1367

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Elasticsearch教程(32) ES 聚合查询后过滤 Distinct Group By Having功能

一、之前写的关于ES聚合的博客 Elasticsearch教程(3) ES聚合查询DSL Elasticsearch教程(4) High Level REST Client API 查询 聚合 分组 Elasticsearch教程(5) 指标聚合 SQL DSL JavaAPI Elasticsearch教程(6) 桶聚合Query DSL-Terms Aggregation Elasticsearch教程(10) ES term terms prefix 搜索 聚合查询 详细总结 Elasticsearc

Java Spring Elasticsearch 1万+

ES聚合查询在基本语法

以下代码均在Kibana的dev tools下执行 1、创造数据 POST /test_aggs/infos/1?pretty { "title":"test class 01", "price": 20, "desc": ["good","very","handsome"] } POST /test_aggs/infos/2?pretty { "title":"tes...

数据与算法架构提升之路专栏 5678

Elasticsearch7.x DSL语法之聚合查询

1.前言 聚合查询是开发中常见的场景,一般包含。求和、最大值、最小值、平均值、总记录数等。 注意事项:text类型是不支持聚合的。 1.1.初始测试数据 学习SQL中常用的案例,老师信息表 字段信息:name(姓名) | age(年龄) | job(工作岗位) | sex(性别1-男,2-女) | salary(薪资) #老师信息 #注:每个岗位都是神圣的,以下测试数据,纯属虚构,仅测试需要 PUT /teacher_info/_bulk { "index" : { "_id" : "101" } } {

程序员小强的博客 9409

Elasticsearch 7.X 聚合查询 及 ElasticsearchRestTemplate 操作

Elasticsearch 7.X 聚合查询

小毕超博客 4599
上一篇: ElasticSearch5.2.2 基本概念和集群配置详解
下一篇: Elasticsearch常用操作命令大全
.NET跨平台
博客等级 码龄15年 6066粉丝 738原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值