elasticSearch和ik分词插件安装和使用

news2024/11/15 9:15:30
elasticSearch

特点:分布式搜索和分析引擎,可以用http以json的方式进行数据索引。

由来:ES全称Elastic Stack(ELK Stack),是由三个产品elasticSearch,logstack(数据收集),kibana(可视化平台)的集成设计方案,解决人们的搜索需求,用于全文检索。

IK分词器
ES常见的几种分词器

分词器 | 分词方式
StandardAnalyzer | 单字分词
CJKAnalyzer | 二分法
IKAnalyzer | 词库分词

分词器作用是把一段中文或者别的划分成一个个的关键字或词,我们在搜索时候会把自己的信息进行分词,会把数据库中或者索引库中的数据进行分词,然后进行个匹配操作,默认的中文分词是将每个字看成一个词,比如“我爱中国"会被分为"我“"爱"中"国”,这是然是不符合要求的,所以我们需要安装中文分词器水来解决这个问题。
(分词器提供了两种分词算法:ik smar和ik max work,其中ik smant是最少切分,ik max work是最细粒度划分

学习es数据库
ik_max_word :,学习、es、数据、库

ik_smart :学习、es、数据库

安装和入门使用

安装前可以先参考看这三个文章
1.安装 2.错误 3.安装插件

  1. Windows系统下Elasticsearch-7.15.2安装_windows安装7.15.2ik分词器-CSDN博客
  2. 解决ElasticSearch本地只能通过localhost访问不能通过IP访问的问题。_localhost能访问,ip地址访问不了-CSDN博客
  3. ElasticSearch下载安装配置及其使用(windows)_elasticsearch下载和安装-CSDN博客

使用的安装包是:(版本一定要一样)

1.elasticsearch-7.15.2-windows-x86_64

2.elasticsearch-analysis-ik-7.15.2

我的安装流程

1.先解压elasticsearch-7.15.2-windows-x86_64。

2.在elasticsearch-7.15.2-windows-x86_64/plugins下,先创建一个名为ik的文件夹(不一定用这个名字,自己创建一个是因为elasticsearch-analysis-ik-7.15.2解压后没有文件夹)

3.把elasticsearch-analysis-ik-7.15.2复制粘贴到,ik下,解压到当前文件夹

4.elasticsearch-7.15.2\config下的elasticsearch.yml,新增三个值,这三个值原本是注释到模板的,可以搜索一下然后新增

network.host: 0.0.0.0

http.port: 9200

cluster.initial_master_nodes: ["node-1"]

5.运行elasticsearch-7.15.2\bin下的elasticsearch.bat,启动日志查看是否有ik分词器插件是否加载完成,浏览器运行 127.0.0.1:9200查看是否有json出现,有就成功了。
在这里插入图片描述

接口的使用

我用的是postman去调用调试接口
1.创建一个具有ik_smart分词的索引,这个索引相当于mysql中的库。

put: http://192.168.2.108:9200/nba

{ 
  "settings": {
    "number_of_shards": 1,
    "number_of_replicas": 0,
    "analysis":{
        "analyzer":{
            "default":{
                "tokenizer":"ik_smart"
            }
        }
    }
  }, 
  "mappings": {
    "properties": {
      "name":{
        "type": "keyword"
      },
      "description":{
        "type": "text"
      }
    }
  }
}

在这里插入图片描述
2.给前面的库添加信息,_doc文档相当于mysql表中的行

post:http://192.168.2.108:9200/nba/_doc
{
  "name":"科比",
  "description":"湖人的名宿科比布莱恩特"
}

![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/a7b1dc551b2d4c5390033c27793a040a.png

3.第二步添加之后,会返回一个id,复制过来,试一下查询

get: http://192.168.2.108:9200/nba/_doc/kmVX7pAB8qKKc8y0iK4Z

在这里插入图片描述

4.试一下删除,同上操作

delete : http://192.168.2.108:9200/nba/_doc/kmVX7pAB8qKKc8y0iK4Z

在这里插入图片描述
5.再把刚刚那个加回来,我们试一下,更新操作
更新有两种,覆盖和追加
5.1,覆盖会把其他字段置空

put: http://192.168.2.108:9200/nba/_doc/k2Vc7pAB8qKKc8y06K70
{
  "name":"科比覆盖"
}

在这里插入图片描述
在这里插入图片描述
5.2追加不会影响其他字段。

post : http://192.168.2.108:9200/nba/_doc/k2Vc7pAB8qKKc8y06K70/_update
{
  "name":"科比追加"
}

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

6.搜索接口(记得把原来的数据name更新成科比,不然可能搜索不到,比如刚刚更新成科比追加的话,这里搜索科比就搜不到了,得搜索全称,至于为什么,后面会讲到分词)

post : http://192.168.2.108:9200/nba/_search
{
    "query":{
        "match":{
            "name":"科比"
                
                }
                }
}

在这里插入图片描述

7.查看分词器结果(这里和前面存入的没关系了,就是针对分词器的查看解析,因为我们一开始创建的索引是以ik_smart的)这个接口相当于搜索框下面的提词。

post :http://192.168.2.108:9200/_analyze?pretty=true
{
	"analyzer":"ik_smart",
	"text": "湖人的名宿科比布莱恩特"
}

在这里插入图片描述
在这里插入图片描述
上面可以看到无论是 name “科比追加” 还是description “湖人的名宿科比布莱恩特” 进行的分词结果 都是一个科 和 一个 比,这就是为什么上面如果不是搜索全称的话直接搜索科比的话会搜索不到,如果原来的name是“科比”,虽然分词是一个“科”和一个“比”,但是只要是全称依然能搜索到,而如果是“科比追加”,搜索“科比”的话,就没法搜索到了。那么如何解决后面这种情况呢?就是接下来的自定义分词了。

8.自定义分词
这个没什么复杂的,原本引入的分词就是写了一个文件 内容是 各种词汇,而我们的自定义分词,只是新建一个新的文件去新增我们自己的词汇,然后把新的文件地址写在分词器中就行了。

8.1
去到ik分词器config文件下。
比如我是

E:\work\ES\elasticsearch-7.15.2\plugins\ik\config

可以看到一个文件IKAnalyzer.cfg.xml

8.2
复制main.dic ,粘贴一个副本出来,然后修改为my.dic,然后把my.dic清空。
为什么要这么做呢,因为我自己新建结果搞半天发现是文件编码问题,要保证utf-8,所以直接复制最方便。
8.3
打开,给 <entry key="ext_dict">my.dic</entry>这个标签加上my.dic
8.4
给my.dic,像main.dic那样添加词汇,这次我们就加一个科比即可。
在这里插入图片描述

8.5
重启es
8.6
重新查看“科比追加”和“湖人的名宿科比布莱恩特”的分词结果,可以发现两个字科比合在一起了。但经过我检验,自定义分词,只能合并词汇,而不能拆分,比如没用自定义分词之前的分词结果是 “布莱恩特”,你想通过自定义分词成“布莱”和“恩特”,他是不会分的,他的作用是合并。拆分的功能应该在建立索引的时候过滤器那里。
在这里插入图片描述
在这里插入图片描述

8.7
我们把name改成科比追加,然后搜索,“科比”,发现是搜索到了,说明这个自定义分词生效。
注意:我这里搜索发现并不符合预期,原因是创建索引之前我还没加自定义分词。这样的话索引就有可能没用到,虽然es启动能看到用了,但只是安装成功了而已。所以需要先删除索引,创建索引,添加文档一遍。
get:http://192.168.2.108:9200/nba/_mapping 可以看到什么变化都没
在这里插入图片描述
这时候得删除前面的索引,即库,重新添加文档,再一次查询映射可以看到。
在这里插入图片描述
这时候搜索“科比”可以看到出来了。
在这里插入图片描述
9.停止词
查看“湖人的名宿科比布莱恩特”的分词结果,可以看到有个单独的“的”字。这些“的”“了”等等词出现频率很高,会降低查询的准确度和效率,所以有必要新增一个停止词的扩展

9.1
和自定义分词一样,创建文件,引入文件。
源文件是stopword.dic,我们创建一个新的 myStopwords.dic,然后加一个“的”,再到IKAnalyzer.cfg.xml去,给里面 <entry key="ext_stopwords">myStopwords.dic</entry>
加上这个文件。
在这里插入图片描述
9.2
重启
在这里插入图片描述
9.3
看分词器结果不用删除索引,要看搜索效果的话,要删除索引重新来一遍,不然跟前面一样,这里就不多操作一遍了

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【新手必备】5分钟学会Transformer算法的核心要点

Transformer 是近年来在自然语言处理&#xff08;NLP&#xff09;领域取得显著成果的一种深度学习模型&#xff0c;最初由 Vaswani et al. 在 2017 年提出。 与传统的序列模型&#xff08;如 RNN 和 LSTM&#xff09;相比&#xff0c;Transformer 的主要优势在于其能够更好地处…

零基础5分钟上手亚马逊云科技AWS核心云架构知识-用S3桶托管静态网页

简介&#xff1a; 小李哥从今天开始将开启全新亚马逊云科技AWS云计算知识学习系列&#xff0c;适用于任何无云计算或者亚马逊云科技技术背景的开发者&#xff0c;让大家0基础5分钟通过这篇文章就能完全学会亚马逊云科技一个经典的服务开发架构。 我将每天介绍一个基于亚马逊云…

go之protobuf和grpc

一、Protobuf Protobuf是接口规范的描述语言&#xff0c;可以通过工具生成代码&#xff0c;将结构化数据序列化。 二、grpc gRPC 是 Google 公司基于 Protobuf 开发的跨语言的开源 RPC 框架。 三、使用教程 3.1 student.proto syntax "proto3"; import "go…

软件测试---接口测试

一、接口及接口测试概念 &#xff08;1&#xff09;接口的类型 &#xff08;2&#xff09;接口测试的概念 &#xff08;3&#xff09;接口测试的原理 &#xff08;4&#xff09;接口测试的特点 &#xff08;5&#xff09;接口测试的实现方式 二、HTTP协议 &#xff08;1&#…

【人工智能】AI时代程序员----是缔造AI程序员,还是AI缔造程序员?

是缔造AI程序员&#xff0c;还是AI缔造程序员&#xff1f; 前言 随着AIGC&#xff08;如ChatGPT、MidJourney、Claude等&#xff09;大语言模型的涌现&#xff0c;AI辅助编程工具日益普及&#xff0c;程序员的工作方式正在发生深刻变革。 ​ ChatGPT ​ Midjourney ​ Claude …

【免费测试】人脸身份证比对接口如何用Java对接?(一)

一、什么是人脸身份证比对&#xff1f; 人脸身份证比对又称人证比对&#xff0c;实人比对&#xff0c;人像比对&#xff0c;输入姓名、身份证号码和头像照片&#xff0c;与公安库身份证头像进行权威比对&#xff0c;返回分值作为判断依据。 二、人脸身份证比对接口适用哪些场…

Processing之函数

一.函数基础 函数是processing程序中最基本的结构。经常使用的函数有draw()、line()、size()等。计算机每次运行程序的一行。当一个函数运行时&#xff0c;计算机跳到函数定义的位置&#xff0c;运行到哪里的代码&#xff0c;然后在跳回它离开的位置。 1.1掷骰子 案例代码如图…

离线安装windows应用商店中的应用

以windows notepad为例 1.百度windows应用商店&#xff0c;notepad 进入https://apps.microsoft.com/detail/9msmlrh6lzf3?hlen-aq&glAQ 是一个名为windows notepad的应用&#xff0c;复制地址栏里面detail后面的字符9msmlrh6lzf3 有很多notepad类似的应用&#xff0c;wi…

2024年新能源汽车充电桩建设驶入快车道

2024年新能源汽车市场大爆发&#xff1a;渗透率飙升&#xff0c;保有量创新高&#xff0c;充电桩建设驶入快车道 随着2024年新能源汽车市场的持续繁荣&#xff0c;一场前所未有的绿色革命正在全球范围内加速推进。这一年&#xff0c;新能源汽车的渗透率不仅实现了质的飞跃&…

CSS 实现两边固定宽,中间自适应

0. **Flexbox 实现**&#xff1a; css复制代码.container { display: flex; } ​ .fixed { width: 200px; /* 两边固定宽度 */ } ​ .flexible { flex: 1; /* 中间自适应 */ } html复制代码<div class…

指纹失效,忘记iPhone屏幕解锁密码怎么应对?

为保证手机的安全及隐私&#xff0c;我们会给手机设置屏幕锁屏密码&#xff0c;通过输入设置密码来解锁手机屏幕锁&#xff0c;但为了给大家提供快速便捷的解锁方式&#xff0c;苹果公司提供了指纹解锁&#xff0c;不仅解锁更便捷了还极大地增强了设备的安全性。但有时我们手指…

springboot在线图库网站-计算机毕业设计源码38597

基于SpringbootVue的在线图库网站的设计与实现 摘 要 本文基于Spring Boot作为后端框架&#xff0c;Vue作为前端框架&#xff0c;设计并实现了一个功能丰富的在线图库网站。该网站提供了注册、登录、普通用户功能和管理员功能等一系列功能&#xff0c;为用户提供了方便的浏览摄…

[论文笔记]BM25S:Python打造超越RANK-BM25的实现

引言 今天带来一篇BM25变种的论文笔记&#xff0c;不要低估BM25&#xff0c;在RAG中检索中通常都会引入BM25检索&#xff0c;然后配合嵌入模型进行混合检索。 BM25S: Orders of magnitude faster lexical search via eager sparse scoring&#xff0c;题目翻译过来是&#xf…

sqlserver导出数据脚本

文章目录 sqlserver导出数据脚本任务-生成脚本 sqlserver导出数据脚本 任务-生成脚本

第二十天的学习(2024.8.8)Vue拓展

昨天的笔记中&#xff0c;我们进行的项目已经可以在网页上显示查询到数据库中的数据&#xff0c;今天的笔记中将会完成在网页上进行增删改查的操作 1.删除表中数据 现在网页上只能呈现出数据库中的数据&#xff0c;我们首先添加一个删除按钮&#xff0c;使其可以对数据库数据…

线上学习管理系统/在线学习系统/网上学习系统

摘 要 本毕业设计的内容是设计并且实现一个基于SSM框架的线上学习管理系统。它是在Windows下&#xff0c;以MYSQL为数据库开发平台&#xff0c;Tomcat网络信息服务作为应用服务器。线上学习管理系统的功能已基本实现&#xff0c;主要包括学生、教师、课程信息、课程资料、试题…

用Python轻松移除PDF中的注释

PDF文档因其跨平台的兼容性和格式稳定性而备受青睐。然而&#xff0c;随着文档在不同用户间的流转&#xff0c;累积的注释可能会变得杂乱无章&#xff0c;甚至包含敏感或过时的信息&#xff0c;这不仅影响了文档的清晰度和专业性&#xff0c;还可能引发隐私风险。因此&#xff…

本地Linux服务器创建我的世界MC私服并实现与好友异地远程联机游戏

文章目录 前言1. 安装JAVA2. MCSManager安装3.局域网访问MCSM4.创建我的世界服务器5.局域网联机测试6.安装cpolar内网穿透7. 配置公网访问地址8.远程联机测试9. 配置固定远程联机端口地址9.1 保留一个固定tcp地址9.2 配置固定公网TCP地址9.3 使用固定公网地址远程联机 前言 本…

01_Electron 跨平台桌面应用开发介绍

Electron 跨平台桌面应用开发介绍 一、Electron 的介绍二、关于 NW.js 和 Electron 介绍三、搭建 Electron 的环境1、准备工作&#xff1a;2、安装 electron 环境3、查看 electron 的版本&#xff0c;electron -v 一、Electron 的介绍 Electron 是由 Github 开发的一个跨平台的…

四宫格照片拼图怎么制作?5种方法制作很简单

一张创意满满的四宫格照片总能瞬间吸引眼球&#xff0c;无论是社交媒体分享还是日常记录&#xff0c;都能让你的作品脱颖而出。今天&#xff0c;给大家分享五种超实用的四宫格照片拼图制作方法&#xff0c;快来一起看看吧。 方法一&#xff1a;迅捷图片转换器 这不仅是一款强大…