热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ElasticSearch中的中文分词器以及索引基本操作详解

elasticsearch,中的,中文,分词,器,以及,索

@[toc] 本文是松哥所录视频教程的一个笔记,笔记简明扼要,完整内容小伙伴们可以参考视频,视频下载链接:https://pan.baidu.com/s/1NHoe0_52ut9fDUh0A6UQLA 提取码: kzv7

1.ElasticSearch 分词器介绍

1.1 内置分词器

ElasticSearch 核心功能就是数据检索,首先通过索引将文档写入 es。查询分析则主要分为两个步骤:

  1. 词条化:分词器将输入的文本转为一个一个的词条流。
  2. 过滤:比如停用词过滤器会从词条中去除不相干的词条(的,嗯,啊,呢);另外还有同义词过滤器、小写过滤器等。

ElasticSearch 中内置了多种分词器可以供使用。

内置分词器:

分词器 作用
Standard Analyzer 标准分词器,适用于英语等。
Simple Analyzer 简单分词器,基于非字母字符进行分词,单词会被转为小写字母。
Whitespace Analyzer 空格分词器。按照空格进行切分。
Stop Analyzer 类似于简单分词器,但是增加了停用词的功能。
Keyword Analyzer 关键词分词器,输入文本等于输出文本。
Pattern Analyzer 利用正则表达式对文本进行切分,支持停用词。
Language Analyzer 针对特定语言的分词器。
Fingerprint Analyzer 指纹分析仪分词器,通过创建标记进行重复检测。

1.2 中文分词器

在 Es 中,使用较多的中文分词器是 elasticsearch-analysis-ik,这个是 es 的一个第三方插件,代码托管在 GitHub 上:

  • https://github.com/medcl/elasticsearch-analysis-ik

1.2.1 安装

两种使用方式:

第一种:

  1. 首先打开分词器官网:https://github.com/medcl/elasticsearch-analysis-ik。
  2. 在 https://github.com/medcl/elasticsearch-analysis-ik/releases 页面找到最新的正式版,下载下来。我们这里的下载链接是 https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.9.3/elasticsearch-analysis-ik-7.9.3.zip。
  3. 将下载文件解压。
  4. 在 es/plugins 目录下,新建 ik 目录,并将解压后的所有文件拷贝到 ik 目录下。
  5. 重启 es 服务。

第二种:

./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.9.3/elasticsearch-analysis-ik-7.9.3.zip 

1.2.2 测试

es 重启成功后,首先创建一个名为 test 的索引:

接下来,在该索引中进行分词测试:

1.2.3 自定义扩展词库

1.2.3.1 本地自定义

在 es/plugins/ik/config 目录下,新建 ext.dic 文件(文件名任意),在该文件中可以配置自定义的词库。

如果有多个词,换行写入新词即可。

然后在 es/plugins/ik/config/IKAnalyzer.cfg.xml 中配置扩展词典的位置:

1.2.3.2 远程词库

也可以配置远程词库,远程词库支持热更新(不用重启 es 就可以生效)。

热更新只需要提供一个接口,接口返回扩展词即可。

具体使用方式如下,新建一个 Spring Boot 项目,引入 Web 依赖即可。然后在 resources/stastic 目录下新建 ext.dic 文件,写入扩展词:

接下来,在 es/plugins/ik/config/IKAnalyzer.cfg.xml 文件中配置远程扩展词接口:

配置完成后,重启 es ,即可生效。

热更新,主要是响应头的 Last-Modified 或者 ETag 字段发生变化,ik 就会自动重新加载远程扩展辞典。

视频笔记,在公众号江南一点雨后台回复 elasticsearch04 获取下载链接。

2. ElasticSearch 索引管理

微信公众号江南一点雨后台回复 elasticsearch05 下载本笔记。

启动一个 master 节点和两个 slave 节点进行测试(参考第二集的视频搭建)。

2.1 新建索引

2.1.1 通过 head 插件新建索引

在 head 插件中,选择 索引选项卡,然后点击新建索引。新建索引时,需要填入索引名称、分片数以及副本数。

索引创建成功后,如下图:

0、1、2、3、4 分别表示索引的分片,粗框表示主分片,细框表示副本(点一下框,通过 primary 属性可以查看是主分片还是副本)。.kibana 索引只有一个分片和一个副本,所以只有 0。

2.1.2 通过请求创建

可以通过 postman 发送请求,也可以通过 kibana 发送请求,由于 kibana 有提示,所以这里采用 kibana。

创建索引请求:

PUT book 

创建成功后,可以查看索引信息:

需要注意两点:

  • 索引名称不能有大写字母

  • 索引名是唯一的,不能重复,重复创建会出错

2.2 更新索引

索引创建好之后,可以修改其属性。

例如修改索引的副本数:

PUT book/_settings { "number_of_replicas": 2 } 

修改成功后,如下:

更新分片数也是一样。

2.3 修改索引的读写权限

索引创建成功后,可以向索引中写入文档:

PUT book/_doc/1 { "title":"三国演义" } 

写入成功后,可以在 head 插件中查看:

默认情况下,索引是具备读写权限的,当然这个读写权限可以关闭。

例如,关闭索引的写权限:

PUT book/_settings { "blocks.write": true } 

关闭之后,就无法添加文档了。关闭了写权限之后,如果想要再次打开,方式如下:

PUT book/_settings { "blocks.write": false } 

其他类似的权限有:

  • blocks.write
  • blocks.read
  • blocks.read_only

2.4 查看索引

head 插件查看方式如下:

请求查看方式如下:

GET book/_settings 

也可以同时查看多个索引信息:

GET book,test/_settings 

也可以查看所有索引信息:

GET _all/_settings 

2.5 删除索引

head 插件可以删除索引:

请求删除如下:

DELETE test 

删除一个不存在的索引会报错。

5.6 索引打开/关闭

关闭索引:

POST book/_close 

打开索引:

POST book/_open 

当然,可以同时关闭/打开多个索引,多个索引用 , 隔开,或者直接使用 _all 代表所有索引。

2.7 复制索引

索引复制,只会复制数据,不会复制索引配置。

POST _reindex { "source": {"index":"book"}, "dest": {"index":"book_new"} } 

复制的时候,可以添加查询条件。

2.8 索引别名

可以为索引创建别名,如果这个别名是唯一的,该别名可以代替索引名称。

POST /_aliases { "actions": [ { "add": { "index": "book", "alias": "book_alias" } } ] } 

添加结果如下:

将 add 改为 remove 就表示移除别名:

POST /_aliases { "actions": [ { "remove": { "index": "book", "alias": "book_alias" } } ] } 

查看某一个索引的别名:

GET /book/_alias 

查看某一个别名对应的索引(book_alias 表示一个别名):

GET /book_alias/_alias 

可以查看集群上所有可用别名:

GET /_alias 

最后,松哥还搜集了 50+ 个项目需求文档,想做个项目练练手的小伙伴不妨看看哦~

需求文档地址:https://github.com/lenve/javadoc


推荐阅读
  • 【实例简介】本文详细介绍了如何在PHP中实现微信支付的退款功能,并提供了订单创建类的完整代码及调用示例。在配置过程中,需确保正确设置相关参数,特别是证书路径应根据项目实际情况进行调整。为了保证系统的安全性,存放证书的目录需要设置为可读权限。值得注意的是,普通支付操作无需证书,但在执行退款操作时必须提供证书。此外,本文还对常见的错误处理和调试技巧进行了说明,帮助开发者快速定位和解决问题。 ... [详细]
  • 您的数据库配置是否安全?DBSAT工具助您一臂之力!
    本文探讨了Oracle提供的免费工具DBSAT,该工具能够有效协助用户检测和优化数据库配置的安全性。通过全面的分析和报告,DBSAT帮助用户识别潜在的安全漏洞,并提供针对性的改进建议,确保数据库系统的稳定性和安全性。 ... [详细]
  • 浏览器作为我们日常不可或缺的软件工具,其背后的运作机制却鲜为人知。本文将深入探讨浏览器内核及其版本的演变历程,帮助读者更好地理解这一关键技术组件,揭示其内部运作的奥秘。 ... [详细]
  • 如何使用 `org.apache.tomcat.websocket.server.WsServerContainer.findMapping()` 方法及其代码示例解析 ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • Spring框架中枚举参数的正确使用方法与技巧
    本文详细阐述了在Spring Boot框架中正确使用枚举参数的方法与技巧,旨在帮助开发者更高效地掌握和应用枚举类型的数据传递,适合对Spring Boot感兴趣的读者深入学习。 ... [详细]
  • 在ElasticStack日志监控系统中,Logstash编码插件自5.0版本起进行了重大改进。插件被独立拆分为gem包,每个插件可以单独进行更新和维护,无需依赖Logstash的整体升级。这不仅提高了系统的灵活性和可维护性,还简化了插件的管理和部署过程。本文将详细介绍这些编码插件的功能、配置方法,并通过实际生产环境中的应用案例,展示其在日志处理和监控中的高效性和可靠性。 ... [详细]
  • 在List和Set集合中存储Object类型的数据元素 ... [详细]
  • DevExpress v17.2新版本亮点深入解析:CodeRush功能详解(下篇)
    DevExpress v17.2 最新版本现已正式发布,我们将在系列文章中详细介绍其各项新特性。本文聚焦于 CodeRush v17.2 的最新功能,包括对 XAML 标准的全面支持。欢迎下载并体验这一强大工具的全新功能。 ... [详细]
  • 优化后的标题:深入探讨网关安全:将微服务升级为OAuth2资源服务器的最佳实践
    本文深入探讨了如何将微服务升级为OAuth2资源服务器,以订单服务为例,详细介绍了在POM文件中添加 `spring-cloud-starter-oauth2` 依赖,并配置Spring Security以实现对微服务的保护。通过这一过程,不仅增强了系统的安全性,还提高了资源访问的可控性和灵活性。文章还讨论了最佳实践,包括如何配置OAuth2客户端和资源服务器,以及如何处理常见的安全问题和错误。 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • PHP预处理常量详解:如何定义与使用常量 ... [详细]
  • 如何撰写初级和高级前端开发者的专业简历
    如何撰写初级和高级前端开发者的专业简历 ... [详细]
  • 本文探讨了如何有效地构建和优化微信公众平台账号,涵盖了用户信息管理、内容创作与发布、互动策略及数据分析等方面。通过合理设置用户信息字段,如用户名、昵称、密码、真实姓名和性别等,确保账号的安全性和用户体验。同时,文章还介绍了如何利用微信公众平台的各项功能,提升用户参与度和品牌影响力。 ... [详细]
  • 在《Python编程基础》课程中,我们将深入探讨Python中的循环结构。通过详细解析for循环和while循环的语法与应用场景,帮助初学者掌握循环控制语句的核心概念和实际应用技巧。此外,还将介绍如何利用循环结构解决复杂问题,提高编程效率和代码可读性。 ... [详细]
author-avatar
熊金涟_473
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有