Elastic Stack--05--聚合、映射mapping

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 1.聚合(aggregations)
    • 基本概念
      • ==桶(bucket)==
      • ==度量(metrics)==
    • 案例 1
      • 1. 接下来按price字段进行分组:
      • 2. 若想对所有手机价格求平均值。
    • 案例 2
      • 1. 搜索address中包含mill的所有人的年龄分布以及平均年龄
      • 2. 按照年龄聚合,并且请求这些年龄段的这些人的平均薪资
      • 3. 查出所有年龄分布,并且这些年龄段中M的平均薪资和F的平均薪资以及这个年龄段的总体平均薪资
  • 2.映射配置(_mapping)
    • ElasticSearch7-去掉type概念: ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/13e3511789084d46b0614848a9984c1a.png)
    • 2.1 什么是映射?
        • 映射是定义文档的过程,文档包含哪些字段,这些字段是否保存,是否索引,是否分词等
    • 2.2 查看索引库中所有的属性的_mapping
    • 2.3 创建映射字段
      • 新增映射字段
    • 2.4 更新映射
    • 2.5 数据迁移
    • 2.6 映射案例
        • 报错只因创建映射时"tel"的"index"为false。


1.聚合(aggregations)

  • 聚合允许使用者对 es 文档进行统计分析,类似与关系型数据库中的 group by,当然还有很多其他的聚合,例如取最大值max、平均值avg等等。

基本概念

Elasticsearch中的聚合,包含多种类型,最常用的两种,一个叫 ,一个叫 度量

桶(bucket)

在这里插入图片描述

度量(metrics)

在这里插入图片描述

案例 1

1. 接下来按price字段进行分组:

在 Postman 中,向 ES 服务器发 GET请求 : http://127.0.0.1:9200/shopping/_search,附带JSON体如下:

{"aggs":{//聚合操作"price_group":{//名称,随意起名"terms":{//分组"field":"price"//分组字段}}}
}

返回结果如下:

{"took": 63,"timed_out": false,"_shards": {"total": 1,"successful": 1,"skipped": 0,"failed": 0},"hits": {"total": {"value": 6,"relation": "eq"},"max_score": 1,"hits": [{"_index": "shopping","_type": "_doc","_id": "ANQqsHgBaKNfVnMbhZYU","_score": 1,"_source": {"title": "小米手机","category": "小米","images": "http://www.gulixueyuan.com/xm.jpg","price": 3999}},{"_index": "shopping","_type": "_doc","_id": "A9R5sHgBaKNfVnMb25Ya","_score": 1,"_source": {"title": "小米手机","category": "小米","images": "http://www.gulixueyuan.com/xm.jpg","price": 1999}},{"_index": "shopping","_type": "_doc","_id": "BNR5sHgBaKNfVnMb7pal","_score": 1,"_source": {"title": "小米手机","category": "小米","images": "http://www.gulixueyuan.com/xm.jpg","price": 1999}},{"_index": "shopping","_type": "_doc","_id": "BtR6sHgBaKNfVnMbX5Y5","_score": 1,"_source": {"title": "华为手机","category": "华为","images": "http://www.gulixueyuan.com/xm.jpg","price": 1999}},{"_index": "shopping","_type": "_doc","_id": "B9R6sHgBaKNfVnMbZpZ6","_score": 1,"_source": {"title": "华为手机","category": "华为","images": "http://www.gulixueyuan.com/xm.jpg","price": 1999}},{"_index": "shopping","_type": "_doc","_id": "CdR7sHgBaKNfVnMbsJb9","_score": 1,"_source": {"title": "华为手机","category": "华为","images": "http://www.gulixueyuan.com/xm.jpg","price": 1999}}]},"aggregations": {"price_group": {"doc_count_error_upper_bound": 0,"sum_other_doc_count": 0,"buckets": [{"key": 1999,"doc_count": 5},{"key": 3999,"doc_count": 1}]}}
}

上面返回结果会附带原始数据的。若不想要不附带原始数据的结果, 设置"size":0

在 Postman 中,向 ES 服务器发 GET请求 : http://127.0.0.1:9200/shopping/_search,附带JSON体如下

{"aggs":{"price_group":{"terms":{"field":"price"}}},"size":0
}

返回结果如下:

{"took": 60,"timed_out": false,"_shards": {"total": 1,"successful": 1,"skipped": 0,"failed": 0},"hits": {"total": {"value": 6,"relation": "eq"},"max_score": null,"hits": []},"aggregations": {"price_group": {"doc_count_error_upper_bound": 0,"sum_other_doc_count": 0,"buckets": [{"key": 1999,"doc_count": 5},{"key": 3999,"doc_count": 1}]}}
}

2. 若想对所有手机价格求平均值。

在 Postman 中,向 ES 服务器发 GET请求 : http://127.0.0.1:9200/shopping/_search,附带JSON体如下:

{"aggs":{"price_avg":{//名称,随意起名"avg":{//求平均"field":"price"}}},"size":0
}

返回结果如下:

{"took": 14,"timed_out": false,"_shards": {"total": 1,"successful": 1,"skipped": 0,"failed": 0},"hits": {"total": {"value": 6,"relation": "eq"},"max_score": null,"hits": []},"aggregations": {"price_avg": {"value": 2332.3333333333335}}
}

案例 2

1. 搜索address中包含mill的所有人的年龄分布以及平均年龄

在这里插入图片描述

2. 按照年龄聚合,并且请求这些年龄段的这些人的平均薪资

在这里插入图片描述

3. 查出所有年龄分布,并且这些年龄段中M的平均薪资和F的平均薪资以及这个年龄段的总体平均薪资

在这里插入图片描述

2.映射配置(_mapping)

ElasticSearch7-去掉type概念: 在这里插入图片描述

Elasticsearch 7.x

  • URL中的type参数为可选。比如,索引一个文档不再要求提供文档类型。

Elasticsearch 8.x

  • 不再支持URL中的type参数。

  • 解决:将索引从多类型迁移到单类型,每种类型文档一个独立索引

2.1 什么是映射?

有了索引库,等于有了数据库中的 database。接下来就需要建索引库(index)中的映射了,类似于数据库(database)中的表结构(table)。

  • 创建数据库表需要设置字段名称,类型,长度,约束等;索引库也一样,需要知道这个类型下有哪些字段,每个字段有哪些约束信息,这就叫做映射(mapping)
映射是定义文档的过程,文档包含哪些字段,这些字段是否保存,是否索引,是否分词等

2.2 查看索引库中所有的属性的_mapping

在这里插入图片描述

2.3 创建映射字段

在这里插入图片描述
类型名称:就是前面将的type的概念,类似于数据库中的不同表

字段名:类似于列名,properties下可以指定许多字段。

每个字段可以有很多属性。例如:

  • type:类型,可以是text、long、short、date、integer、object等
  • index:是否索引,默认为true
  • store:是否存储,默认为false
  • analyzer:分词器,这里使用ik分词器:ik_max_word或者ik_smart

在这里插入图片描述

新增映射字段

如果我们创建完成索引的映射关系后,又要添加新的字段的映射,这时怎么办?第一个就是先删除索引,然后调整后再新建索引映射,还有一个方式就在已有的基础上新增。
在这里插入图片描述
在这里插入图片描述

2.4 更新映射

  • 对于存在的映射字段,我们不能更新,更新必须创建新的索引进行数据迁移

2.5 数据迁移

在这里插入图片描述
在这里插入图片描述
案例:新创建了索引,并指定了映射属性
在这里插入图片描述
在这里插入图片描述

2.6 映射案例

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

报错只因创建映射时"tel"的"index"为false。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/275348.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UE4案例记录

UE4案例记录(制作3D角色显示在UI中) 制作3D角色显示在UI中 转载自youtube视频 https://www.youtube.com/channel/UCC8f6SxKJElVvaRb7nF4Axg 新建项目 创建一个Actor 场景组件->摄像机组件->场景捕获组件2D,之后添加一个骨骼网格体…

使用helm部署clickhouse

(作者:陈玓玏) 前置条件 已安装 Kubernetes 集群; 已安装 Helm 包管理工具。 部署 1 添加 RadonDB ClickHouse 的 Helm 仓库 helm repo add ck https://radondb.github.io/radondb-clickhouse-kubernetes/ helm repo upd…

【LLMs+小羊驼】23.03.Vicuna: 类似GPT4的开源聊天机器人( 90%* ChatGPT Quality)

官方在线demo: https://chat.lmsys.org/ Github项目代码:https://github.com/lm-sys/FastChat 官方博客:Vicuna: An Open-Source Chatbot Impressing GPT-4 with 90% ChatGPT Quality 模型下载: https://huggingface.co/lmsys/vicuna-7b-v1.5 | 所有的模…

使用公式在Excel中指定列值的变化实现自动间隔着色(不是按照固定的行数)

如果你的文件很小,可以手工着色;但如果很大,就要借助公式来着色; 目的是什么,其中之一是:提升可读性。 一起往下看吧!! 如果你想要根据Excel某列中值的变化来间隔着色,…

一台服务器部署两个独立的mysql实例

🍁博主简介: 🏅云计算领域优质创作者 🏅2022年CSDN新星计划python赛道第一名 🏅2022年CSDN原力计划优质作者 🏅阿里云ACE认证高级工程师 🏅阿里云开发者社区专…

python--类与面向对象-2

一、对象在文本中的输出 class Person: def __init__(self,name,agg,live_value,money): self.namename self.aggagg self.live_valuelive_value self.moneymoney def describe(): print(%s的攻击力是%s%(self.name,self.agg)) pPerson(bob,10,10000,100) bPerson(tony,…

机器学习笔记 - 用于3D物体检测的KITTI数据集的使用及说明

一、什么是 KITTI 数据集? KITTI 是由卡尔斯鲁厄理工学院和芝加哥丰田理工学院开发的自动驾驶数据集(目前分2012和2015版本)。它是计算机视觉研究中使用的图像和 LIDAR 数据的集合,例如立体视觉、光流、视觉里程计、3D 对象检测和…

14、设计模式之命令模式(Command)

一、什么是命令模式 命令模式(Command Pattern)是一种行为型设计模式,又叫动作模式或事务模式。它将请求(命令)封装成对象,使得可以用不同的请求对客户端进行参数化,具体的请求可以在运行时更改…

Css基础——绘制三角形、鼠标样式、轮廓线、放拖拽文本域、vertical-align属性

1、三角形的绘制方法 当一个盒子的width和height都为0时 四个边框都有颜色时,可以显示出三角形来 当其中的三边都是透明(transparent)的时候,就可以看到一个小三角形 2、鼠标样式(cursor) 代码部分&#…

sqllab第七关通关笔记

知识点: 利用回显信息不同进行盲注爆破出敏感信息两种绕过方法 单引号闭合绕过;不加注释符 id 1 and 11 完全闭合原始语句的绕过;这题是采用了where id((输入)) id 1)) and 11 -- 首先判断注入类型 构造id1/0 正常回显,字符型注…

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:Toggle)

组件提供勾选框样式、状态按钮样式及开关样式。 说明: 该组件从API Version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 子组件 仅当ToggleType为Button时可包含子组件。 接口 Toggle(options: { type: ToggleType, is…

Shell常用脚本:hadoop集群启动、停止、重启脚本

脚本内容以我搭建的hadoop集群为例,你们自用的时候自行根据你们的情况进行修改即可 hadoop-cluster-manager.sh #!/bin/bash # 1. 调用此脚本前,请使用ssh-keygen -t rsa、ssh-copy-id -f 目标机器这两个命令使得目标机器是免密登录的 # 2. ssh远程执行…

分布式搜索引擎elasticsearch(2)

1.DSL查询文档 elasticsearch的查询依然是基于JSON风格的DSL来实现的。 1.1.DSL查询分类 Elasticsearch提供了基于JSON的DSL([Domain Specific Language](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl.html))来定义查…

(done) 使用 vscode 快速把 .ipynb 文件 转为 .py 文件

如图,先点红圈 随后点 Export 后续操作凭直觉 可以使用 vim 的匹配功能把那些难看的符号给删掉,比如 :%s/# \%\%.*$//g

浅谈人工智能

☕️各位观众老爷好,路过点个免费的赞再走呗!❤️❤️(*•̀ᴗ•́*)و 前言 随着2024年的到来,人工智能领域正迎来前所未有的变革和发展。随着计算能力的增强、大数据的积累以及机器学习算法的进步, AI的定义和本质 人工智能…

(黑马出品_高级篇_04)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式

(黑马出品_高级篇_04)SpringCloudRabbitMQDockerRedis搜索分布式 微服务技术——可靠性消息服务 今日目标服务异步通信-高级篇1.消息可靠性1.1.生产者消息确认1.1.1.修改配置1.1.2.定义Return回调1.1.3.定义ConfirmCallbac…

【BUG 弹药库】二分模板的优化

文章目录 1. 为什么要优化二分算法?2. 如何去优化原来的二分模板?3. 案例分析 1. 为什么要优化二分算法? ① 平常学习的二分整数的算法模板边界的问题很容易出错,不知道什么时候用 l mid,r mid - 1;或者是…

Vue:内置组件:KeepAlive(缓存组件实例)

一、作用 <KeepAlive></KeepAlive>能缓存包裹的所有组件&#xff0c;保证组件在切换时维持组件状态。 默认情况下&#xff0c;一个组件实例在被替换掉后会被销毁。这会导致它丢失其中所有已变化的状态——当这个组件再一次被显示时&#xff0c;会创建一个只带有初…

机器视觉系统选型-相机选型

分辨率&#xff1a;通过视野大小和精度需求来确定 相机分辨率 eg&#xff1a;视野(工件10mm8mm允许2mm的浮动)&#xff1a;12mm10mm&#xff0c;检测精度需求为0.01mm则理论需求的相机分辨率为&#xff1a;12mm/0.01mm1200以及10mm/0.01mm1000此时选择一个分辨率略大于1200*100…

StarRocks实战——云览科技存算分离实践

目录 背景 一、平台现状&痛点 1.1 使用组件多&#xff0c;维护成本高 1.2 链路冗长&#xff0c;数据时效性难以保证 1.3 服务稳定性不足 二、StarRocks 存算分离调研 2.1 性能对比 2.2 易用性 2.3 存储成本 三、StarRocks 存算分离实践 3.1 查询优化 3.1.1 物化…