在学习 ES 文档相关操作之前,我们先学习 ES 中常用的字段类型。
1. 字段类型
1.1 text
当一个字段的内容需要被全文检索时,可以使用text
类型,
优点
-
支持长内容的存储,比如检索文章内容、商品信息等。
-
该类型的字段内容在保存时会被分词器分析,并且拆分成多个词项
然后根据拆分后的词项生成对应的索引,根据关键字检索时可能会将关键字分词,用分好的词从之前生成的索引中去匹配,进而找到对应的文档。
在学习 ES 文档相关操作之前,我们先学习 ES 中常用的字段类型。
当一个字段的内容需要被全文检索时,可以使用text
类型,
优点
支持长内容的存储,比如检索文章内容、商品信息等。
该类型的字段内容在保存时会被分词器分析,并且拆分成多个词项
然后根据拆分后的词项生成对应的索引,根据关键字检索时可能会将关键字分词,用分好的词从之前生成的索引中去匹配,进而找到对应的文档。
ELK是Elasticsearch+Logstash+Kibana简称
除了查询之外,最常用的聚合了,ElasticSearch提供了三种聚合方式: 桶聚合(Bucket Aggregation),指标聚合(Metric Aggregation) 和 管道聚合(Pipline Aggregation)。本文主要讲讲桶聚合(Bucket Aggregation)。
我们在SQL结果中常有:
SELECT COUNT(color)
FROM table
GROUP BY color
前文主要讲了 ElasticSearch提供的三种聚合方式之桶聚合(Bucket Aggregation),本文主要讲讲指标聚合(Metric Aggregation)。
在bucket聚合中,我画了一张图辅助你构筑体系,那么metric聚合又如何理解呢?
前文主要讲了 ElasticSearch提供的三种聚合方式之指标聚合(Metric Aggregation),本文主要讲讲管道聚合(Pipeline Aggregation)。简单而言就是让上一步的聚合结果成为下一个聚合的输入,这就是管道。
如何理解管道聚合呢?最重要的是要站在设计者角度看这个功能的要实现的目的:让上一步的聚合结果成为下一个聚合的输入,这就是管道。
DSL查询极为常用的是对文本进行搜索,我们叫全文搜索,本文主要对全文搜索进行详解。
提示
很多读者在看官方文档学习时存在一个误区,以DSL中full text查询为例,其实内容是非常多的, 没有取舍/没重点去阅读, 要么需要花很多时间,要么头脑一片浆糊。所以这里重点谈谈我的理解。
一些理解:
DSL查询另一种极为常用的是对词项进行搜索,官方文档中叫”term level“查询,本文主要对term level搜索进行详解。
如前文所述,查询分基于文本查询和基于词项的查询:
在查询中会有多种条件组合的查询,在ElasticSearch中叫复合查询。它提供了5种复合查询方式:bool query(布尔查询)、boosting query(提高查询)、constant_score(固定分数查询)、dis_max(最佳匹配查询)、function_score(函数查询)。
在前文中,我们使用bool
查询来组合多个查询条件。
了解基本使用后,我们从索引操作的角度看看如何对索引进行管理。
我们在前文中增加文档时,如下的语句会动态创建一个customer的index:
PUT /customer/_doc/1
{
"name": "John Doe"
}
前文介绍了索引的一些操作,特别是手动创建索引,但是批量和脚本化必然需要提供一种模板方式快速构建和管理索引,这就是本文要介绍的索引模板(Index Template),它是一种告诉Elasticsearch在创建索引时如何配置索引的方法。为了更好的复用性,在7.8中还引入了组件模板。
索引模板是一种告诉Elasticsearch在创建索引时如何配置索引的方法。