本教程是系列教程,对于初学者能够对 ES 有一个整体意识和实际实战。

还没开始的同学,倡议先读一下系列攻略目录:Springboot2.x整合ElasticSearch7.x实战目录

本篇幅是继上一篇 Springboot2.x整合ElasticSearch7.x实战(一) ,适宜初学 Elasticsearch 的小白,能够跟着整个教程做一个练习。

第三章 分词器装置

应用搜寻,少不了应用分词器,elasticsearch 自带了一些简略分词器,也能够应用第三方分词器插件,如 ik、pinyin 等。

Standard Analyzer - 默认分词器,按词切分,小写解决Simple Analyzer - 依照非字母切分(符号被过滤), 小写解决Stop Analyzer - 小写解决,停用词过滤(the,a,is)Whitespace Analyzer - 依照空格切分,不转小写Keyword Analyzer - 不分词,间接将输出当作输入Patter Analyzer - 正则表达式,默认\W+(非字符宰割)Language - 提供了30多种常见语言的分词器Customer Analyzer 自定义分词器

ik分词器插件装置

  1. 下载和elasticsearch版本统一

教程应用的是 7.7.0 版本。

  1. 筹备 ik 目录,
cd plugins && mkdir ik
  1. 下载
wget https://github.com/medcl/elas...
有些中央从github下载网络不好,我在课件里有插件压缩包。
  1. 解压到对应ik目录

解压文件到目录 elasticsearch-7.7.0/plugins/ik 下。

  1. 重启es,查看是否装置胜利
curl http://localhost:9200/_cat/plugins

rest 实例:

拼音分词器插件装置

  1. 下载和elasticsearch版本统一

教程应用的是 7.7.0 版本。

  1. 筹备 ik 目录,
cd plugins && mkdir pinyin
  1. 下载
wget https://github.com/medcl/elas...
有些中央从github下载网络不好,我在课件放了插件的压缩包。
  1. 解压到对应pinyin目录

解压文件到目录 elasticsearch-7.7.0/plugins/pinyin 下。

  1. 重启es,查看是否装置胜利
curl http://localhost:9200/_cat/plugins

更多扩大词库

  • 同义词词库
https://github.com/ginobefun/...

有些状况会应用咱们本人的分词服务,前面代码中会解说应用形式。

第四章 Elasticsearch外围概念

Elasticsearch外围概念-相干术语解析

Cluster

Elasticsearch 集群,由一台或多台的Elasticsearch 节点(Node)组成。

Node

Elasticsearch 节点,能够认为是Elasticsearch的服务过程,在同一台机器上启动两个Elasticsearch实例(过程),就是两个node节点。

Index

索引,具备雷同构造的文档的汇合,相似于关系型数据库的数据库实例(6.0.0版本type废除后,索引的概念降落到等同于数据库表的级别)。一个集群中能够有多个索引。

Type

类型,在索引中内进行逻辑细分,在新版的Elasticsearch中曾经废除。

对于 type 废除问题,如果你须要保护低版本 elasticsearch(在7.0.0、6.*、5.6版本变动较大),肯定要浏览这篇官网英文文档 https://www.elastic.co/guide/...

Document

文档,Elasticsearch中的最小的数据存储单元,JSON数据格式,很多雷同构造的文档组成索引。文档相似于关系型数据库中表内的一行记录。

举个例子,一篇新闻的文档数据。

news document{    "id":"1",    "title":"China is a great country",    "content":"I love China."}

Shard

分片,单个索引切分成多个shard,散布在多台Node节点上存储。能够利用shard很好的横向扩大,以存储更多的数据,同时shard散布在多台node上,能够晋升集群整体的吞吐量和性能。在创立索引的时候能够间接指定分片的数量即可,一旦指定就不能再批改了。

Replica

索引正本,齐全拷贝shard的内容,一个shard能够有一个或者多个replica,replica就是shard的数据拷贝,以进步冗余。

replica承当三个工作:

  1. shard故障或者node宕机时,其中的一个replica能够升级成shard
  2. replica保证数据不失落,保障高可用
  3. replica能够分担搜寻申请,进步集群的吞吐和性能

shard 的全称叫 primary shard,replica 全称叫 replica shard,primary shard 数量在创立索引时指定,前期不能批改,replica shard 前期能够批改。默认每个索引的 primary shard 值为5,replica shard 值为1,含意是5个primary shard,5个 replica shard,共10个 shard。因而 Elasticsearch 最小的高可用配置是2台服务器。

了解倒排索引

例如倒排索引等内容

倒排索引相干术语

倒排索引(Inverted Index)是整个搜寻的外围,倒排索引是实现“单词-文档矩阵”的一种具体存储模式,通过倒排索引,能够依据单词疾速获取蕴含这个单词的文档列表。倒排索引次要由两个局部组成:“单词词典”和“倒排文件”。

单词词典(Lexicon):常索引单位是单词,单词词典是由文档汇合中呈现过的所有单词形成的字符串汇合,单词词典内每条索引项记录单词自身的一些信息以及指向“倒排列表”的指针。

倒排列表(PostingList):倒排列表记录了呈现过某个单词的所有文档的文档列表及单词在该文档中呈现的地位信息,每条记录称为一个倒排项(Posting)。依据倒排列表,即可获知哪些文档蕴含某个单词。

倒排文件(Inverted File):所有单词的倒排列表往往程序地存储在磁盘的某个文件里,这个文件即被称之为倒排文件,倒排文件是存储倒排索引的物理文件。

概念关系:

简略倒排索引实例

倒排索引从逻辑构造和基本思路上来讲非常简单。上面咱们通过具体实例来进行阐明,使得大家可能对倒排索引有一个宏观而间接的感触。

假如有五个文档:

通过分词后,每个文档就转换为由单词序列形成的数据流,为了零碎后续解决不便,须要对每个不同的单词赋予惟一的单词编号,同时记录下哪些文档蕴含这个单词,在如此解决完结后,咱们能够失去最简略的倒排索引。

事实上,索引零碎还能够记录除此之外的更多信息。下图是一个绝对简单些的倒排索引,与上图的根本索引零碎比,在单词对应的倒排列表中不仅记录了文档编号,还记录了单词频率信息(TF),即这个单词在某个文档中的呈现次数,之所以要记录这个信息,是因为词频信息在搜寻后果排序时,计算查问和文档类似度是很重要的一个计算因子,所以将其记录在倒排列表中,以不便后续排序时进行分值计算。

最初,实用的倒排索引还能够记录更多的信息,上图所示索引零碎除了记录文档编号和单词频率信息外,额定记录了两类信息,即每个单词对应的“文档频率信息”(以及在倒排列表中记录单词在某个文档呈现的地位信息。

“文档频率信息”代表了在文档汇合中有多少个文档蕴含某个单词,之所以要记录这个信息,其起因与单词频率信息一样,这个信息在搜寻后果排序计算中是十分重要的一个因子。而单词在某个文档中呈现的地位信息并非索引零碎肯定要记录的,在理论的索引零碎里能够蕴含,也能够抉择不蕴含这个信息,之所以如此,因为这个信息对于搜寻零碎来说并非必须的,地位信息只有在反对“短语查问”的时候才可能派上用场。

参考:https://blog.csdn.net/hguisu/...

在看和分享是对我最大的激励,我是 pub 哥,咱们下期再见