分享好友 最新动态首页 最新动态分类 切换频道
Elasticsearch(全文搜索引擎)
2024-12-26 23:13

一. 简介

​ Elasticsearch是一个搜索引擎,它底层是基于Lucene来实现的。

Elasticsearch(全文搜索引擎)

​ Lucene是一个Java库,它存在着一定的问题,如果项目的开发语言不是Java,那么是无法使用 Lucene;Lucene底层设计非常的复杂,需要深入的了解搜索相关的知识,才能用好它。

​ Elaticsearch它是完全基于Restful风格的API来使用,那么就不在局限于任何一门语言,都可以直接调用接口即可实现搜索服务。

二. 倒排索引和前向索引(正排索引)

****分词就是将一句话或者一段话,按照某个语义拆分为一个个的字或者词的过程。例如

 
2.1 前向索引

前向索引在数据库领域用的很多,例如 MySQL的全文检索。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6L89unqV-1678946462776)(images/前向索引.jpg)]

2.2 倒排索引

搜索引擎中都是使用这种方式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iR9NMoeR-1678946462778)(images/倒排索引.jpg)]

2.3 总结

​ 前向索引,每个文档都有一个文档的编号,每个文档的编号对应着该文档的分词信息,用户在搜索匹配的时候,根据文档编号找到该文档对应的分词,去进行分词的匹配,如果有匹配的分词,那么该文档就在最终的结果集中,所以它查询的效率会很低,但是其分词构建索引过程较快,因为每个文档的分词都是独立的。

​ 倒排索引,文档在写入搜索引擎的时候,对文档进行分词,将字典中已经存在的分词直接与文档进行映射,没有的分词,先添加到字典中,然后再映射。用户在搜索匹配的时候,直接到分词字典中去匹配,匹配到之后,将映射到该分词的文档提取出来,这种方式查询效率高,可以作相关性算分。

三. ES与Kibana的安装

3.1 ES的安装

Elasticsearch是整个 elastic 产品栈的核心,数据的存储、分词、搜索都是通过 Elasticsearch来完成。

通过 docker安装,直接执行如下命令即可

 

验证ES是否安装成功,在浏览器输入:http://ip:9200

3.2 Kibana的安装

Kibana是ES的可视化操作界面,安装方式如下所示

 

验证Kibana是否安装成功,在浏览器输入: http://ip:5601

3.3 logstash导入数据

要进入到logstash的bin目录下,打开dos命令行,导入数据使用如下的命令

 

logstash的内容如下所示

 

四. ES的基本概念

我们类比 RDBMDS 来熟悉ES的一些基本概念

RDBMSElasticsearch数据库索引表type(在ES7之后,一个索引中只有一个type,叫做 )记录文档(一个JSON对象)字段属性schemamapping

在ES中三层含义

  1. 索引,数据集
  2. 索引,将数据写入到ES的过程叫做索引。
  3. 倒排索引。

五. ES的基本增删改

查看所有的索引

 

添加数据

 

指定id添加数据

 

添加数据,如果存在就报错

 

更新文档的结构

 

删除数据

 

根据id查询数据

 

查看部分数据

 

查看数据总量

 

六. Request Body查询

查询电影名字中包含有 seconds 的所有的电影

 

查询电影的名字中包含有 beautiful 或者 mind所有的电影

 

查询电影的名字中包含有 beautiful 和 mind所有的电影

 

查询电影的名字中包含有 "beautiful mind"这个短语的所有的电影

 

如果某个字段的数据是 keyword 类型,就是做等值比较, 最好使用 term查询(term是标准的比较)

 

查询电影在 [2000, 2002] 年上映的所有的电影

 

查询电影的名字中包含有 beautiful 或者 mind,而且上映时间在 [2000, 2003] 所有的电影,多条件查询的结构如下所示

 
 

查询电影的名字和类型中包含有 Romance 所有的电影

 

查询电影名字中包含有 seconds 所有的电影,但是只查询id和title着两个属性的内容

 

查询电影名字中包含有 seconds 所有的电影,属性都不看

 

七. 前缀匹配

​ 前缀匹配是一个网站中使用频率非常高的一个功能,而且在添加和删除字符的时候都会向服务器端发送请求,对服务器和ES都是一个挑战,所以ES针对这种前缀匹配,专门设计了一个数据类型 。如果某个属性的数据类型是 ,只能进行前缀匹配,并且ES会将查询的数据放到缓存中,如果接着有其他用户进行相同的前缀匹配的时候,会直接从内存中查找。

​ ES中一旦某个索引中有数据了,我们是不能调整它的 mapping 信息,所以在ES中要向指定某个属性的数据类型的时候,需要先设定mapping.

7.1 设计mapping的思路
  1. 预先构思好索引中要存放什么数据,说白了就是有哪些属性
  1. 利用ES本身的能力(写入数据的时候,会自动创建mapping),写入一个样例数据,让ES帮我们创建好mapping.
  1. 查询mapping,按照我们的需求做出适当的调整
 
  1. 将之前的索引删掉,将修改之后的mapping添加到ES中。
 
  1. 导入正规数据
  1. 验证前缀匹配
 

八. Analysis分词

​ Analysis是分词,它内部是通过分词器(analyzer)来完成

​ Analyzer在整个分词的过程中,经过三个流程

  1. character filter,将内容的信息进行过滤
  2. tokenizer,将全文本进行分词处理
  3. token filter,去掉分词之后的停用词,然后将其他内容转小写

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-suLcQp15-1678946462779)(images/Analyzer.jpg)]

8.1 ES内置的分词器

ES内置的分词器只能对英文进行分词处理,ES内置的分词器有

  1. whitespace
  2. stop
  3. standard
  4. simple

验证某个分词器的分词效果

 
8.2 IK和pinyin分词器的使用
8.2.1 IK的安装

IK是目前社区用的最多一款中文分词器,它内部包含了两个分词器,和 , 下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases

安装的方式:解压到 目录下即可。需要注意的是,要使用一个文件夹将其包裹起来,因为ik分词器解压之后没有文件夹包裹的。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nSx5XLwL-1678946462779)(images/ik.jpg)]

ik分词的验证

 
8.2.2 pinyin的安装

pinyin就是将中文转换为拼音的方式,下载地址:https://github.com/medcl/elasticsearch-analysis-pinyin/releases?page=7

安装的方式:解压到 目录下即可。pinyin分词器是有文件夹包裹的。

 

九. 中文、pinyin前缀搜索

  1. 因为ik、pinyin他们并没有提供的完善的拼音+汉字的前缀搜索,需要在pinyin分词器的基础上定制
  1. 自定义分词器
 
  1. 定义mapping
 
  1. 插入数据
 

插入数据之后,在倒排索引的字典中会有如下的分词结果

 
  1. 执行搜索
 

“刘德华”
}

POST users/_doc/2
{
“id”: 2,
“name”: “柳宗元”
}

POST users/_doc/3
{
“id”: 3,
“name”: “柳岩”
}
POST users/_doc/4
{
“id”: 4,
“name”: “李思思”
}

POST users/_doc/5
{
“id”: 5,
“name”: “李小路”
}

POST users/_doc/6
{
“id”: 6,
“name”: “李小小”
}

 

刘德华
ldh
liudehua
柳宗元
liuzongyuan
lzy
柳岩
liuyan
ly
李思思
lisisi
lss
李小路
lxl
lixiaolu
李小小
lxx
lixiaoxiao

最新文章
微信小程序如何获取链接
微信小程序的链接获取是开发者在开发过程中需要注意的一个重要问题。链接是小程序中不可或缺的元素,它可以在不同页面之间进行导航和跳转,为用户提供丰富的交互体验。这篇文章将介绍如何在微信小程序中获取链接,并提供一些实用的技巧和注
阅读与写作兴趣班教学计划
阅读与写作兴趣班教学计划(通用12篇)  时间就如同白驹过隙般的流逝,前方等待着我们的是新的机遇和挑战,现在就让我们好好地规划一下吧。计划到底怎么拟定才合适呢?以下是小编为大家收集的阅读与写作兴趣班教学计划,希望对大家有所帮
【C8600360清理大师下载】华为C8600360清理大师8.4.2免费下载
清理大师:更简单,更畅快!6亿用户信赖的手机清理!清理大师是一款完全免费的手机加速与空间清理软件,强力加速使手机运行更流畅,一键清理快速解决空间不足问题。【一键清理】一键搞定无用垃圾,手机清理更省心【手机加速】瞬间释放手机
《时代》专访ChatGPT之父:人工智能影响经济还需要很多年
划重点:① OpenAI的首席执行官山姆·奥特曼(Sam Altman)曾表示,如果使用不当,人工智能会让所有人都消亡。② 在倡导人工智能可能性的同时,奥特曼敦促政策制定者制定规则和通过监管来减轻人工智能可能带来的危险。奥特曼倡导用普世的基
抖音直播突围:封闭外链中的外链建设策略169
## 网站外链规划师:抖音直播封闭外链外链建设方案 #### ## 一、背景分析抖音平台对外部链接的限制日益严格,使得传统的外链建设方式难以奏效。为了突破这一限制,需要制定针对性的外链建设策略。## 二、目标设定* 增加高质量的反向链接*
vue自建h5应用,接入企业微信JDK(WECOM-JSSDK),实现跳转添加好友功能
1、使用vue开发了一套h5页面的项目 2、这个h5链接是在企业微信里某个地方打开的 3、打开页面的时候有一个好友列表,点击好友列表某一条复制手机号跳转到企业微信添加好友页面 博客只允许上传gif图,所以我只能手机进行录屏
网站文章快速地被百度搜索引擎收录的操作方法解析
今天Lkr.com SEO技术教程学习网就来给大家分享一下它的实际测试操作:如何让百度搜索引擎快速收录网站文章。第一步:为网站文章建立关键词标题简单来说,很多站长都会使用关键词来嵌入网站文章标题,但是很多站长却忽略了用户的搜索习惯。
《名侦探柯南》第1121话图透:新一和小兰甜蜜发糖!白马探看穿基德伪装?
最近一个月,《名侦探柯南》漫画正在连载新的系列篇章,柯南、基德(新一)、白马探、小兰等人气角色集体登场。剧情有“新兰”CP发糖的甜蜜、有“三巨头”联手破案的烧脑、还有白马探辨别基德身份的惊险,每一话都无比精彩。而《名侦探柯南
陈达美股投资
几天前去了百度世界2024,人山人海纳百川。我讲百度的段子已经讲到了,只要提到百度,大家就会想到我。所以会后就有媒体记者采访,阿达啊,说说百度世界2024呗。我说啊,“三个事印象比较深刻,第一,没想到大模型那么难货币化变现,道阻且
百度和吉利高管称将兜底极越智驾和售后;Kimi突然崩了丨邦早报
【百度和吉利高管称将兜底极越智驾和售后】12月14日,百度集团副总裁、智能驾驶事业群组总裁王云鹏在朋友圈公开表示:“我们已经开始行动,智驾和地图导航有我们兜底,请极越车主放心。”同日,吉利控股集团高级副总裁杨学良也发布微博称,
相关文章
推荐文章
发表评论
0评