【Elasticsearch 入门公开课】如何配置 ES-Mapping/Analyzer 及多种聚合分析介绍-回顾篇(5)

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 本周课程(19~22讲)阮一鸣老师详细的讲解如何设置Elasticsearch Mapping,并通过配置 Mapping 实现自定义Analyzer,同时运用 Index Template 和 Dynamic Template 更方便的设计Mapping 索引,还简单介绍了 Elasticsearch 多种聚合分析方式。

简介:本周课程(19~22讲)阮一鸣老师详细的讲解如何设置Elasticsearch Mapping,并通过配置 Mapping 实现自定义Analyzer,同时运用 Index Template 和 Dynamic Template 更方便的设计Mapping 索引,还简单介绍了 Elasticsearch 多种聚合分析方式。

讲师:阮一鸣——eBay Pronto 平台技术负责人、极客时间『Elasticsearch 核心技术与实战』课程讲师
课程为了更多同学能快速体验 Elasticsearch,为大家提供了免费的阿里云 Elasticsearch (3节点1核2G)的测试环境>>>>去开通

image.png

课程回顾

19 | 显式Mapping设置与常见参数介绍
20 | 多字段特性及Mapping中配置自定义Analyzer
21 | Index Template和Dynamic Template
22 | Elasticsearch聚合分析简介

知识点 1 :显式Mapping设置与常见参数介绍


如何显示定义一个 Mapping

定义 Mapping 仅需调用“PUT”的索引文字,就可以创建,同时加上 Mapping 定义文字,是一个 Jason 格式。

image.png

自定义 Mapping 的一些建议

1、可以参考 API 手册,纯手写
2、通过以下步骤可减少输入工作量、减少出错率
• 创建一个临时的 index,写入一些样本数据
• 通过访问 Mapping API 获得该临时文件的动态 Mapping 定义
• 修改后用,使用该配置创建你的索引
• 删除临时索引

自定义 Mapping 优势

1、通过Index--控制当前字段是否被索引,默认为 true ,设置为 “false”,该字段不可被搜索,且节约存储开销

image.png

2、倒排索引(Index Options)创建,有四种不同级别配置,除了“Text”类型默认记录“postions”,其他默认为 “docs”,记录内容越多,占用存储越多

image.png

3、当你需要对“null—value”实现搜索,只需在 Mapping 文件中,对“null-value”指定为你需要的值

image.png

4、由于“_ all”在7.0版本中已被取消,要实现这个功能我们可以用“copy_to”来实现

image.png

“copy_to ”将字段数字拷贝到目标字段,实现类似“_all”的作用

“copy_to ”的目标字段不出现在“_source”中

数组类型

Elasticsearch 中不提供专门的数组类型,但任何字段,都可以包含多个相同类型的数值。

image.png

知识点 2 :多字段特性及Mapping中配置自定义Analyzer


多字段特性

1、当我们为索引设置 Mapping 文件时,我们可以为字段增加一个子字段,如在默认情况下,“Text”ES都会有一个默认的“keyword”字段,

2、使用不同的 analyzer ,实现不同语言进行分词,如英文;以 “pinyin”方式搜索,还支持为搜索和索引指定不同的 analyzer。

image.png

精确值和全文本比较

精确值:包括数字/日期/具体一个字符串(如“Apple Stroe”)
在ES 中,该类指以“keyword”来表示,不做分词处理。

image.png

全文本:非结构化的文本数据。
在ES 中,该类指定为“Text”需要进行分词处理。

image.png

自定义分词

当 Elasticsearch 自带分词无法满足时,可以自定义分词器,通过自祝贺不同的组件实现。

Character Filter

① 在Tokenizer 之前对文本进行处理,例如增加删除及替换字符。可以配置多个 Character Filters。会影响 Tokenizer 的 position 和offset 信息。
② 一些自带的 Character Filters

HTML strip— 去除HTML标签

Mapping — 字符串替换
Pattern replace — 正则匹配替换

Tokenizer
① 将原始文本按照一定规则,切分为 term or token
② Elasticsearch 内置的 Tokenizers

whitespace/standard/uax_url_email/pattern/keyword/path hierarchy

③ 可以用 Java 开发插件,实现自己的 Tokenizer

Token Filter
① 将 Tokenizer 输出的单词(term),进行增加、修改、删除
② Elasticsearch 自带的 Token Filters

Lowercase/stop/synonym(添加近义词)

设置一个 Custom Analyzer

当 Elasticsearch 以上的分词无法满足需求,在创建索引时,可以自定义自己的 Custom Analyzer
image.png

知识点 3 :Index Template 和 Dynamic Template


在业务进行中,集群上会有越来越多的索引,如果你是做日志管理,你会为你的日志每天创建一个索引,因为这样可以更好的管理你的数据,并提高性能。

Index Template

按照一定规则,自动匹配到新创建的索引上,设定 Mapping 和 Setting

① 模板会在一个新创建索引时产生作用,修改模板不会影响已创建的模板
② 设定多个索引模板,这些设置会被“merge”在一起
③ 可以指定“order”设置,控制“merging”的过程

image.png

Index Template 工作方式

当一个索引被创建时
① 应用 Elasticsearch 默认的 settings 和 mappings
② 应用 order 数值低的 Index Template 中的设定
③ 应用 order 高的 Index Template 中的设定,之前的设定会被覆盖
④ 应用创建索引是,用户所指定的 Settings 和Mappings,并覆盖之前模板中的设定。

什么是 Dynamic Template

应用在具体的索引上,根据 Elasticsearch 识别的数据类型,结合字段名称,来动态设定字段类型

①可以实现所有字符串类型设定为“keyword”或者关闭“keyword”字段
②“is”开通的字段设置成“boolean”
③“long_”开头的都设置成“long”类型

image.png

1、设定在某个索引的 Mapping 中

2、设定一个 Template 名称
3、设定匹配规格数组
4、设定匹配到字段 设置 Mapping

匹配规则参数

① match_mapping_type:匹配自动识别的字段类型,如string,boolean等
② match,unmatch:匹配字段名
③ path_match,path_unmatch

image.png

知识点 4 :Elasticsearch聚合分析简介


什么是聚合(Aggregation)

Elasticsearch除搜索以外,同时提供统计分析功能,具有实时性高,同样的功能Hadoop上需要多出一天时间。通过聚合,可以帮助我们得到数据概览。
① 高性能
② 无需客户端自己去实现分析逻辑。

image.png

Kibana 可视化报表-聚合分析

Kibana 报表也是用 Elasticsearch 聚合分析实现的。

image.png

聚合的分类,共分为 4 大类

一、Bucket Aggregation:一些列把满足特东条件的文档聚合

image.png

二、Metric Aggregation:一些数字运算,可以对文档字段进行统计分析

①Metric 会基于数据集计算结果,除了支持在字段上进行计算,同样也支持在脚本(painless script)产生的结果之上进行计算
②大多数 Metric 是数据计算,仅输出一个值
③部分 Metric 支持输出多个数值

举个例子(Bucket & Metric)
image.png

Bucket Aggregation
image.png

加入 Metrics
image.png

嵌套Aggregation

image.png

三、Pipeline Aggregation:对其他的聚合结果进行二次聚合

四、Matix Aggregation:支持对多个字段的操作并提供一个结果矩阵

下周课程预告


点击预约课程
23 | 入门课程总结

相关活动


更多折扣活动,请访问阿里云 Elasticsearch 官网

• 阿里云 Elasticsearch 商业通用版,1核2G首月免费
阿里云 Elasticsearch 日志增强版,首月六折,年付六折
阿里云 Logstash 2核4G首月免费


image.png

image.png

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
30天前
|
存储 负载均衡 索引
linux7安装elasticsearch-7.4.0集群配置
linux7安装elasticsearch-7.4.0集群配置
113 0
|
1月前
|
存储 搜索推荐 Java
|
2月前
|
Docker 索引 容器
Elasticsearch跨集群检索配置
Elasticsearch跨集群检索配置
45 1
|
3月前
|
安全 Linux 开发工具
Elasticsearch 搜索入门技术之一
Elasticsearch 搜索入门技术之一
227 1
|
3月前
|
自然语言处理 API 索引
Elasticsearch Analyzer原理分析并实现中文分词
Elasticsearch Analyzer原理分析并实现中文分词
74 0
|
4月前
|
搜索推荐 Java 数据处理
Elasticsearch搜索分析引擎本地部署与远程访问
Elasticsearch搜索分析引擎本地部署与远程访问
|
3月前
|
前端开发 安全 Ubuntu
Elasticsearch安装和配置
Elasticsearch安装和配置
116 0
|
2月前
|
存储 关系型数据库 MySQL
ElasticSearch 入门
【2月更文挑战第7天】ElasticSearch 入门 简介 ElasticSearch 的基本概念 ElasticSearch 的查询流程 ElasticSearch 的更新流程
37 2
|
2月前
|
存储 自然语言处理 搜索推荐
ElasticSearch入门篇
ElasticSearch入门篇
|
2月前
|
存储 SQL Java
聚合在Elasticsearch中的使用及示例验证
聚合在Elasticsearch中的使用及示例验证
71 0

相关产品

  • 检索分析服务 Elasticsearch版