ElasticSearch-IK分词器(elasticsearch插件)安装配置和ElasticSearch的Rest命令测试

四、IK分词器(elasticsearch插件)

IK分词器:中文分词器

分词:即把一段中文或者别的划分成一个个的关键字,我们在搜索时候会把自己的信息进行分词,会把数据库中或者索引库中的数据进行分词,然后进行一一个匹配操作,默认的中文分词是将每个字看成一个词不使用用IK分词器的情况下),比如“我爱狂神”会被分为”我”,”爱”,”狂”,”神” ,这显然是不符合要求的,所以我们需要安装中文分词器ik来解决这个问题。

IK提供了两个分词算法: ik_smartik_max_word ,其中ik_smart最少切分, ik_max_word最细粒度划分!

1、下载

版本要与ElasticSearch版本对应

下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases

2、安装

ik文件夹是自己创建的

加压即可(但是我们需要解压到ElasticSearch的plugins目录ik文件夹下)
在这里插入图片描述

在这里插入图片描述

3、重启ElasticSearch

加载了IK分词器

在这里插入图片描述

在这里插入图片描述

4、使用 ElasticSearch安装补录/bin/elasticsearch-plugin 可以查看插件

在这里插入图片描述

elasticsearch-plugin list

在这里插入图片描述

5、使用kibana测试

在这里插入图片描述

ik_smart:最少切分

在这里插入图片描述

ik_max_word:最细粒度划分(穷尽词库的可能)

在这里插入图片描述

从上面看,感觉分词都比较正常,但是大多数,分词都满足不了我们的想法,如下例

在这里插入图片描述

那么,我们需要手动将该词添加到分词器的词典当中

6、添加自定义的词添加到扩展字典中

elasticsearch目录/plugins/ik/config/IKAnalyzer.cfg.xml

打开 IKAnalyzer.cfg.xml 文件,扩展字典

在这里插入图片描述

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

创建字典文件,添加字典内容

在这里插入图片描述

在这里插入图片描述

重启ElasticSearch,再次使用kibana测试

在这里插入图片描述

分词器生效

在这里插入图片描述

在这里插入图片描述

五、Rest风格说明

一种软件架构风格,而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁更有层次更易于实现缓存等机制。

1、基本Rest命令说明:

methodurl地址描述
PUT(创建,修改)localhost:9200/索引名称/类型名称/文档id创建文档(指定文档id)
POST(创建)localhost:9200/索引名称/类型名称创建文档(随机文档id)
POST(修改)localhost:9200/索引名称/类型名称/文档id/_update修改文档
DELETE(删除)localhost:9200/索引名称/类型名称/文档id删除文档
GET(查询)localhost:9200/索引名称/类型名称/文档id查询文档通过文档ID
POST(查询)localhost:9200/索引名称/类型名称/文档id/_search查询所有数据

2、测试

1)创建一个索引,添加

PUT /test1/type1/1
{"name" : "LBJ","age" : 23
}

在这里插入图片描述

在这里插入图片描述

2)字段数据类型

  • 字符串类型
    • text、keyword
      • text:支持分词,全文检索,支持模糊、精确查询,不支持聚合,排序操作;text类型的最大支持的字符长度无限制,适合大字段存储;
      • keyword:不进行分词,直接索引、支持模糊、支持精确匹配,支持聚合、排序操作。keyword类型的最大支持的长度为——32766个UTF-8类型的字符,可以通过设置ignore_above指定自持字符长度,超过给定长度后的数据将不被索引,无法通过term精确匹配检索返回结果。
  • 数值型
    • long、Integer、short、byte、double、float、half floatscaled float
  • 日期类型
    • date
  • te布尔类型
    • boolean
  • 二进制类型
    • binary
  • 等等…

3)指定字段的类型(使用PUT)

类似于建库(建立索引和字段对应类型),也可看做规则的建立

PUT /test2
{"mappings": {"properties": {"name": {"type": "text"},"age":{"type": "long"},"birthday":{"type": "date"}}}
}

在这里插入图片描述

4)获取3建立的规则

GET test2

在这里插入图片描述

5)获取默认信息

_doc 默认类型(default type),type 在未来的版本中会逐渐弃用,因此产生一个默认类型进行代替

PUT /test3/_doc/1
{"name": "流柚","age": 18,"birth": "1999-10-10"
}
GET test3

在这里插入图片描述

如果自己的文档字段没有被指定,那么ElasticSearch就会给我们默认配置字段类型

扩展:通过get _cat/ 可以获取ElasticSearch的当前的很多信息!

GET _cat/indices
GET _cat/aliases
GET _cat/allocation
GET _cat/count
GET _cat/fielddata
GET _cat/health
GET _cat/indices
GET _cat/master
GET _cat/nodeattrs
GET _cat/nodes
GET _cat/pending_tasks
GET _cat/plugins
GET _cat/recovery
GET _cat/repositories
GET _cat/segments
GET _cat/shards
GET _cat/snapshots
GET _cat/tasks
GET _cat/templates
GET _cat/thread_pool

6)修改

两种方案

①旧的(使用put覆盖原来的值)

  • 版本+1(_version)
  • 但是如果漏掉某个字段没有写,那么更新是没有写的字段 ,会消失
PUT /test3/_doc/1
{"name" : "流柚是我的大哥","age" : 18,"birth" : "1999-10-10"
}
GET /test3/_doc/1
// 修改会有字段丢失
PUT /test3/_doc/1
{"name" : "流柚"
}
GET /test3/_doc/1

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

②新的(使用post的update)

  • version不会改变
  • 需要注意doc
  • 不会丢失字段
POST /test3/_doc/1/_update
{"doc":{"name" : "post修改,version不会加一","age" : 2}
}
GET /test3/_doc/1

在这里插入图片描述

在这里插入图片描述

7)删除

GET /test1
DELETE /test1

在这里插入图片描述

8)查询(简单条件)

GET /test3/_doc/_search?q=name:流柚

在这里插入图片描述

9)复杂查询

test3索引中的内容

在这里插入图片描述

①查询匹配
  • match:匹配(会使用分词器解析(先分析文档,然后进行查询))
  • _source:过滤字段
  • sort:排序
  • formsize 分页
  // 查询匹配GET /blog/user/_search{"query":{"match":{"name":"流"}},"_source": ["name","desc"],"sort": [{"age": {"order": "asc"}}],"from": 0,"size": 1}

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

②多条件查询(bool)
  • must 相当于 and
  • should 相当于 or
  • must_not 相当于 not (... and ...)
  • filter 过滤
/// bool 多条件查询
 must <==> and
 should <==> or
 must_not <==> not (... and ...)
 filter数据过滤
 boost
 minimum_should_match
GET /blog/user/_search
{"query":{"bool": {"must": [{"match":{"age":3}},{"match": {"name": "流"}}],"filter": {"range": {"age": {"gte": 1,"lte": 3}}}}}
}

在这里插入图片描述

在这里插入图片描述

③匹配数组
  • 貌似不能与其它字段一起使用
  • 可以多关键字查(空格隔开)— 匹配字段也是符合的
  • match 会使用分词器解析(先分析文档,然后进行查询)
  • 搜词
// 匹配数组 貌似不能与其它字段一起使用
// 可以多关键字查(空格隔开)
// match 会使用分词器解析(先分析文档,然后进行查询)
GET /test3/user/_search
{"query":{"match":{"desc":"詹 库 杜"}}
}

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

④精确查询
  • term 直接通过 倒排索引 指定词条查询
  • 适合查询 number、date、keyword ,不适合text
// 精确查询(必须全部都有,而且不可分,即按一个完整的词查询)
// term 直接通过 倒排索引 指定的词条 进行精确查找的
GET /blog/user/_search
{"query":{"term":{"desc":"年 "}}
}

在这里插入图片描述

有空格

在这里插入图片描述

没有空格

在这里插入图片描述

⑤text和keyword
  • text:
    • 支持分词全文检索、支持模糊、精确查询,不支持聚合,排序操作;
    • text类型的最大支持的字符长度无限制,适合大字段存储;
  • keyword:
    • 不进行分词直接索引、支持模糊、支持精确匹配,支持聚合、排序操作。
    • keyword类型的最大支持的长度为——32766个UTF-8类型的字符,可以通过设置ignore_above指定自持字符长度,超过给定长度后的数据将不被索引,无法通过term精确匹配检索返回结果
// 测试keyword和text是否支持分词
// 设置索引类型
PUT /test
{"mappings": {"properties": {"text":{"type":"text"},"keyword":{"type":"keyword"}}}
}
// 设置字段数据
PUT /test/_doc/1
{"text":"测试keyword和text是否支持分词","keyword":"测试keyword和text是否支持分词"
}
// text 支持分词
// keyword 不支持分词
GET /test/_doc/_search
{"query":{"match":{"text":"测试"}}
}// 查的到
GET /test/_doc/_search
{"query":{"match":{"keyword":"测试"}}
}// 查不到,必须是 "测试keyword和text是否支持分词" 才能查到
GET _analyze
{"analyzer": "keyword","text": ["测试liu"]
}// 不会分词,即 测试liu
GET _analyze
{"analyzer": "standard","text": ["测试liu"]
}// 分为 测 试 liu
GET _analyze
{"analyzer":"ik_max_word","text": ["测试liu"]
}// 分为 测试 liu

在这里插入图片描述

text支持分词

在这里插入图片描述

keyword不支持分词

在这里插入图片描述

完整

在这里插入图片描述

在这里插入图片描述

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

⑥高亮查询
/// 高亮查询
GET blog/user/_search
{"query": {"match": {"name":"流"}},"highlight": {"fields": {"name": {}}}
}
// 自定义前缀和后缀
GET blog/user/_search
{"query": {"match": {"name":"流"}},"highlight": {"pre_tags": "<p class='key' style='color:red'>","post_tags": "</p>", "fields": {"name": {}}}
}

在这里插入图片描述

高亮

在这里插入图片描述

自定义高亮

在这里插入图片描述

ElasticSearch-IK分词器(elasticsearch插件)安装配置和ElasticSearch的Rest命令测试 到此完结,笔者归纳、创作不易,大佬们给个3连再起飞吧

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

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

相关文章

ElasticSearch概述及Window和Linux环境下安装

一、ElasticSearch 1、ElasticSearch概述 ES&#xff08;Elasticsearch&#xff09;是一个基于开放源代码的分布式搜索引擎&#xff0c;用于快速和灵活地搜索和分析大量数据。它是构建在Apache Lucene之上的&#xff0c;通过提供一个简单而强大的RESTful API来实现全文搜索、…

麒麟系统—— openKylin 安装 Nginx

麒麟系统—— openKylin 安装 Nginx 一、准备工作1. 确保麒麟系统 openKylin 已经安装完毕。 二、下载 nginx三、解压与运行解压检查与编译安装编译运行 四、配置加入到服务中加入环境变量nginx 配置文件 五、常用命令 Nginx 是一款高性能的 HTTP 和反向代理服务器&#xff0c…

Java编程练习之类的封装2

1.封装一个股票&#xff08;Stock&#xff09;类&#xff0c;大盘名称为上证A股&#xff0c;前一日的收盘点是2844.70点&#xff0c;设置新的当前值如2910.02点&#xff0c;控制台既要显示以上信息&#xff0c;又要显示涨跌幅度以及点数变化的百分比。运行效果如下&#xff1a;…

【甲方安全建设】DevOps初体验

文章目录 前言传统的开发方式&#xff1a;Docker-解决环境问题 DevOps-CI/CD走向流水线Jenkins工作流程Git拉取代码Maven构建打包通过SSH连接后端服务器 实现效果 DevSecOps-安全赋能关于安全平台漏洞扫描漏洞预警TODO 前言 临近春节&#xff0c;笔者经过半年北漂&#xff0c;…

Linux系统——防火墙

一、防火墙的认识 引言 安全技术 入侵检测系统&#xff08;Intrusion Detection Systems&#xff09;&#xff1a;特点是不阻断任何网络访问&#xff0c;量化、定位来自内外网络的威胁情况&#xff0c;主要以提供报警和事后监督为主&#xff0c;提供有针对性的指导措施和安全…

企业如何对u盘管控,进行U盘管理?公司电脑禁用U盘的方法

随着信息技术的飞速发展&#xff0c;U盘等移动存储设备已成为企业数据传输和存储的重要工具。然而&#xff0c;U盘的滥用和误操作也带来了巨大的安全隐患&#xff0c;如数据泄露、病毒传播等。 因此&#xff0c;对企业而言&#xff0c;如何有效管控U盘的使用&#xff0c;确保数…

Pymysql将爬取到的信息存储到数据库中

爬取平台为电影天堂 获取到的数据仅为测试学习而用 爬取内容为电影名和电影的下载地址 创建表时需要建立三个字段即可 import urllib.request import re import pymysqldef film_exists(film_name, film_link):"""判断插入的数据是否已经存在""&qu…

element表格内多个输入框时如何添加表单校验

以下.vue文件Demo可直接复制运行&#xff1a; 重点&#xff1a; 1&#xff1a;表格数据定义在form里 2&#xff1a;prop需要加索引&#xff1b;索引前的变量不要加form&#xff0c;直接取里边的key&#xff0c;索引后的字段需要和表格里字段属性对应 。:prop"tableInfo.l…

0基础学习VR全景平台篇第140篇:摄影器材保养与维护

上课&#xff01;全体起立~ 大家好&#xff0c;欢迎观看蛙色官方系列全景摄影课程&#xff01; 摄影器材属于精密仪器&#xff0c;在使用过程中会磨损、老化、积灰。如果不对摄影器材进行清洁和保养&#xff0c;油污、灰尘、水渍长期停留在设备上&#xff0c;不仅会大大缩短相机…

从[redis:LinkedList]中学习链表

文章目录 adlistlistNodelistmacros[宏定义]listCreatelistInitNodelistEmptylistReleaselistAddNodeHeadlistLinkNodeHeadlistAddNodeTaillistLinkNodeTaillistInsertNodelistDelNodelistUlinkNodelistIndexredis3.2.100quicklistredis7.2.2quicklist redis的基本数据类型之一…

简单说说mysql的日志

今天我们通过mysql日志了解mysqld的错误日志、慢查询日志、二进制日志&#xff0c;redolog, undolog等。揭示它们的作用和用途&#xff0c;让我们工作中更能驾驭mysql。 redo 日志 如果mysql事务提交后发生了宕机现象&#xff0c;那怎么保证数据的持久性与完整性&#xff1f;…

网站接入QQ登录

开发者认证&#xff0c;创建应用&#xff1a; &#xff08;1&#xff09;先在 QQ 互联 QQ互联管理中心 进行个人开发者认证&#xff0c;并审核 &#xff08;2&#xff09;创建【网站应用】&#xff0c;填写正确信息&#xff0c;获得对应的 appid 与 appkey&#xff0c;并审核…

【机器学习】某闯关类手游用户流失预测

Final Project: 某闯关类手游用户流失预测 1 案例简介 手游在当下的日常娱乐中占据着主导性地位&#xff0c;成为人们生活中放松身心的一种有效途径。近年来&#xff0c;各种类型的手游&#xff0c;尤其是闯关类的休闲手游&#xff0c;由于其对碎片化时间的利用取得了非常广泛…

服务器未启动而端口进程仍在运行如何查看并杀死

首先登录服务器然后查看当前监听的端口&#xff1a; sudo netstat -tuln比如这里的8080&#xff0c;我们此时并未启动服务器&#xff0c;但是它却正在运行&#xff0c;这会导致服务器刚启动就秒挂。如果没有日志的话会让人有点疑惑&#xff0c;这种情况可能是之前运行了该进程…

代码随想录day17--二叉树的应用5

LeetCode654.最大二叉树 题目描述&#xff1a; 给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点&#xff0c;其值为 nums 中的最大值。递归地在最大值 左边 的 子数组前缀上 构建左子树。递归地在最大值 右边 的 子数组后…

鸿蒙开发-UI-页面路由

鸿蒙开发-UI-组件 鸿蒙开发-UI-组件2 鸿蒙开发-UI-组件3 鸿蒙开发-UI-气泡/菜单 文章目录 一、基本概念 二、页面跳转 1.router基本概念 2.使用场景 3.页面跳转参数传递 三、页面返回 1.普通页面返回 2.页面返回前增加一个询问框 1.系统默认询问框 2.自定义询问框 总…

EtherCAT FP介绍系列文章—UDP gateway

EtherCAT主站上的Mailbox Gateway功能&#xff0c;可以用于将EtherCAT mailbox相关协议从外部设备的工具通过邮箱网关路由到EtherCAT从站设备。在EtherCAT规范中定义的所有邮箱协议在此功能中都可用&#xff0c;例如CoE, FoE, VoE, SoE。 但是&#xff0c;这里特别注意的是Mai…

雨云游戏云VPS服务器用Linux搭建MCSM面板和Minecraft Mohist 1.20.2服务器教程,我的世界MOD和插件服开服教程。

雨云游戏云VPS服务器用Linux搭建MCSM面板和Minecraft Mohist 1.20.2服务器教程&#xff0c;我的世界MOD和插件服开服教程。 本教程演示安装的MC服是Mohist 1.20.2版&#xff0c;其他版本也可以参考本教程&#xff0c;差别不大。 本教程使用Docker来运行mc服&#xff0c;可以方…

UserWarning: Glyph 39640 missing from current font问题

是因为不支持中文字体导致的&#xff0c;设置为一个支持中文的字体就行了。 另外&#xff0c;上面的改动会引起负号显示为方块&#xff0c;需要额外再加一条设置。 在中文系统上 import matplotlib.pyplot as plt plt.rcParams[font.sans-serif] [SimHei] # 设置为一个支持…

C#,斯特林数(Stirling Number)的算法与源代码

1 斯特林数 在组合数学&#xff0c;斯特林数可指两类数&#xff0c;第一类斯特林数和第二类斯特林数&#xff0c;都是由18世纪数学家James Stirling提出的。它们自18世纪以来一直吸引许多数学家的兴趣&#xff0c;如欧拉、柯西、西尔沃斯特和凯莱等。后来哥本哈根&#xff08;…