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

本文详细介绍了ElasticSearch中的中文分词器,特别是elasticsearch-analysis-ik的安装、测试和自定义扩展词库的方法。同时,文章还涵盖了ElasticSearch的索引管理,包括新建、更新、读写权限控制、查看、删除、打开/关闭索引,以及复制和别名操作。
摘要由CSDN通过智能技术生成

1.ElasticSearch 分词器介绍

1.1 内置分词器

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

词条化:分词器将输入的文本转为一个一个的词条流。过滤:比如停用词过滤器会从词条中去除不相干的词条(的,嗯,啊,呢);另外还有同义词过滤器、小写过滤器等。ElasticSearch 中内置了多种分词器可以供使用。

内置分词器:

b5468ab056cd5ab06fe0bba9c42fd3ed.png

1.2 中文分词器

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

1.2.1 安装

执行如下命令即可:

518a54345dfd40169fd421c322404b1a.png

1.2.2 测试

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

95b4b241e1c5c89cd72cfdfd178ddad2.png

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

87b196becd96b470841955b66bee03ed.png

1.2.3 自定义扩展词库

1.2.3.1 本地自定义

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

c5b81252fea2d2308c8e0022b501e37f.png

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

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

68f130f8b31dcc76e5db1360b3499a27.png

1.2.3.2 远程词库

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

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

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

2db3c4835786b2617a7a28de472ba84c.png

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

070f0938111ce8f5a8bd5c1afc4bf452.png

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

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

2. ElasticSearch 索引管理

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

2.1 新建索引

2.1.1 通过 head 插件新建索引

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

c6d39c25701b7f04011aa2dadd213efd.png

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

72b382c448271ff3c9b82878cbd594ca.png

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

2.1.2 通过请求创建

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

创建索引请求:

PUTbook

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

5ca61e5db91ebae5683dc6294671660a.png

需要注意两点:

索引名称不能有大写字母

ee9361885ba0b566dc4072d668292397.png

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

c045a8050708601bb02539155500b80e.png

2.2 更新索引

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

例如修改索引的副本数:

1a95da7783c9d7ababa20a38e4b73f22.png

修改成功后,如下:

31b8e4fb71da3ec4675e05b435d92d0b.png

更新分片数也是一样。

2.3 修改索引的读写权限

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

c352411f9283f6eef83b9f4d64b8fca0.png

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

4676c070b0f908265a346f28a0c2ad20.png

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

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

bf7e416018b8e68ece591fd3cec2b25d.png

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

cd4b8e83df768d112a393b44553733b1.png

其他类似的权限有:

blocks.writeblocks.readblocks.read_only2.4 查看索引

head 插件查看方式如下:

0875c10a931892f2833235a75e98e8c7.png

请求查看方式如下:

GETbook/_settings

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

GETbook,test/_settings

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

GET_all/_settings

2.5 删除索引

head 插件可以删除索引:

33ba71cd94463924ed3b80e07ed55afb.png

请求删除如下:

DELETEtest

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

5.6 索引打开/关闭

关闭索引:

POSTbook/_close

打开索引:

POSTbook/_open

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

2.7 复制索引

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

21e0a3c558e08f0d2b986fb7ac3772c7.png

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

2.8 索引别名

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

af2ea75c44d389d2ad414be306456990.png

添加结果如下:

4c607543155b9d382ba622f5be49ab76.png

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

1a0fd8461d27d6f4a6edc201496cb4e1.png

查看某一个索引的别名:

GET/book/_alias

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

GET/book_alias/_alias

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

GET/_alias

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值