当前位置:   article > 正文

12、全文检索 -- Elasticsearch -- 为 Elasticsearch 安装并测试 IK 中文分词器(用指定分词器创建 index 索引库,并通过命令和postman工具测试分词器)_linux下如何测试elasticsearch装的ik插件

linux下如何测试elasticsearch装的ik插件

Elasticsearch 安装并测试 IK 分词器


安装 IK 中文分词器


命令安装分词器插件(失败)


Elasticsearch 提供了插件机制,该机制可维护大量为 Elasticsearch 进行扩展的功能,包括分词器。

 elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/^
 releases/download/v7.14.1/elasticsearch-analysis-ik-7.14.1.zip
  • 1
  • 2

上面命令中两个插件版本号应该和 Elasticsearch 的版本保持一致,我现在用的是 7.14.1 版本。

在这里插入图片描述


命令中的 elasticsearch-plugin 文件就存在bin目录下,专门用来管理 Elasticsearch 的插件。

在这里插入图片描述


执行命令后发现安装失败

在这里插入图片描述


因为我通过上面的命令安装IK中文分词器插件失败,
所以后面选择自己到github下载分词器来解压。


github 下载分词器(成功)

github 下载分词器压缩包过程的文章


1、官网下载

进入这个页面,点击选择版本后进行下载

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

在这里插入图片描述


如图,我自己的 elasticsearch 是7.14.1 版本
通过 postman 发送 : https://localhost:9200 命令 也可以查看自己的elasticsearch的版本

在这里插入图片描述


然后下载

https://github.com/medcl/elasticsearch-analysis-ik/releases/tag/v7.14.1

在这里插入图片描述


2、解压到 …\plugins\ik 文件夹里面

下载完成后,我在 E:\install\Elasticsearch\elasticsearch-7.14.1\plugins\ik 这个 plugins 目录下,创建了一个 ik 文件夹,把分词器压缩包解压到里面。

因为此前安装的elasticsearch,在plugins文件夹里面,什么东西都没有。

在这里插入图片描述


在这里插入图片描述



3、重启elasticsearch失败

然后重启 elasticsearch 服务器,报错了


在这里插入图片描述


C:\Users\JH>elasticsearch
Exception in thread "main" java.nio.file.NotDirectoryException: E:\install\Elasticsearch\elasticsearch-7.14.1\plugins\elasticsearch-7.14.1-windows-x86_64.zip
        at java.base/sun.nio.fs.WindowsDirectoryStream.<init>(WindowsDirectoryStream.java:84)
        at java.base/sun.nio.fs.WindowsFileSystemProvider.newDirectoryStream(WindowsFileSystemProvider.java:523)
        at java.base/java.nio.file.Files.newDirectoryStream(Files.java:472)
        at java.base/java.nio.file.Files.list(Files.java:3699)
        at org.elasticsearch.tools.launchers.BootstrapJvmOptions.getPluginInfo(BootstrapJvmOptions.java:49)
        at org.elasticsearch.tools.launchers.BootstrapJvmOptions.bootstrapJvmOptions(BootstrapJvmOptions.java:34)
        at org.elasticsearch.tools.launchers.JvmOptionsParser.jvmOptions(JvmOptionsParser.java:137)
        at org.elasticsearch.tools.launchers.JvmOptionsParser.main(JvmOptionsParser.java:86)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10


4、删除压缩包,重启成功

重启错误提示没有elasticsearch-7.14.1-windows-x86_64.zip这个目录结构,所以我解压完之后就把压缩包给删除了。

在这里插入图片描述


再重启就成功了。

在这里插入图片描述


至此,IK 中文分词器插件弄好了,接下来就是测试了。
测试包括:通过指定分词器来创建index索引库,并测试分词器是否生效



用指定分词器创建 Index(索引库)


指定分词器创建索引库模板

可以把指定分词器创建 index 索引库的配置,放到一个自己创建的 ljh.json 文件 当中,内容如下:

作用:如果是使用命令来指定分词器创建index索引库的话,直接通过 -d @ljh.json ,让程序到 ljh.json 这个json文件读取这个内容就可以了,而不用我们在命令行窗口里面输入这些内容。主要就是为了方便而已。


而下面的演示,是通过postman来的,所以暂时就不用创建这个文件,只是提示有这个方法可以在使用命令的时候更方便一点而已。

{
  "settings": { 
    "analysis": { 
      "analyzer": {
        "default": {"tokenizer": "ik_max_word"}
      }
    }
  }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

在这里插入图片描述


上面配置文件用于指定创建 Index 索引库时的额外设置,其中 ik_max_word 就是 IK 分词器所提供的分词器,主要作用是能把内容尽可能多的分出词来。

还有一个叫 ik_smart 分词器。


建索引的话,推荐用 ik_max_word 分词器,这个是插件中的分词器
查询的话,推荐用 ik_smart 分词器


官方文档介绍


上面的指定分词器创建索引库的json文件,里面的配置写法,是从官方文档查找的,查找步骤如下:


Elasticsearch 官方文档关于索引库的设置可参考页面:
https://www.elastic.co/guide/en/elasticsearch/reference/7.14/index-modules.html


进入官方文档,选择自己对应的版本,然后看索引模块的介绍

在这里插入图片描述


然后点击查看分词器的设置

在这里插入图片描述


点击 配置文本分词器 查看

在这里插入图片描述


点击指定分词器

在这里插入图片描述


如图:上面的配置就是从官方文档的这里拷贝的。

在这里插入图片描述



通过 postman 来指定分词器创建 Index 索引库


如图:这个命令是在命令行窗口执行的

curl -k -u elastic:e32147 -X PUT https://localhost:9200/ljh_index^
-d @ljh.json -H "Content-Type: application/json"
  • 1
  • 2

如果使用postman,那么命令对应图形界面的操作如图:


-u 用户登录凭证, -X 请求方式

在这里插入图片描述


-k 忽略 SSL 验证

在这里插入图片描述


其中 -d 选项所指定的文件(就是上面说过的 ljh.json 配置文件)就代表了请求数据,如果你用postman,只要将该请求数据添加body中、以raw格式填写即可。

-H 就是指定内容的类型,这里是 json 格式。

这里指定通过 【ik_max_word】这个分词器创建索引库。

在这里插入图片描述


点击执行:https://localhost:9200/ljh_index,指定分词器创建一个叫 ljh_index 的索引库成功

在这里插入图片描述


查看所有索引库

然后send:https://localhost:9200/_cat/indices ,再查看elasticsearch的所有索引库,也成功查到 ljh_index 这个索引库

在这里插入图片描述


查看指定索引库

查看指定Index的信息(直接向指定Index发送GET请求即可)

curl -k -u elastic:e32147 https://localhost:9200/ljh_index?pretty
  • 1

成功为创建的 ljh_index 索引库指定了 ik_nax_word 这个分词器

在这里插入图片描述


创建默认索引库对比

创建一个默认的索引库,不指定分词器

在这里插入图片描述


再查询看看,默认的索引库就看不到分词器的信息。

在这里插入图片描述



测试 IK 中文分词器


命令测试

新建 ljh.json文件:

{
    "analyzer": "ik_max_word",
   "text": "火影忍者Very好看,没事可以再看一遍"
}
  • 1
  • 2
  • 3
  • 4

然后执行如下命令对 ljh.json 文件进行分词:

curl  -k  -u  elastic:e32147 -X  POST  https://localhost:9200/ljh_index/_analyze?pretty=true ^

-d  @ljh.json   -H   "Content-Type: application/json"
  • 1
  • 2
  • 3

其中-d 选项所指定的 ljh.json 这个文件就代表了请求数据,如果你用postman,只要将该请求数据添加body中、以raw格式填写即可。

analyzer:指定使用哪个分词器

pretty=true :让响应回来的格式更好看


对于测试分词器的官方文档描述:

Test an analyzer

在这里插入图片描述


官方测试文档

在这里插入图片描述


命令跟官方操作的对应关系

在这里插入图片描述


postman 测试


在 postman 发送 : https://localhost:9200/ljh_index/_analyze 进行分词器测试成功。

在这里插入图片描述


再具体分析一下测试内容:

根据上面的命令,在postman这边的对应关系进行分析:

-k 忽略 SSL 证书的验证

在这里插入图片描述


-u 用户登录凭证

在这里插入图片描述


-x 这里是 post 请求

-d 命令是指定去 ljh.json 文件读取测试文本内容,用 postman 的话,直接把内容写在 Body 里面即可

-H 这里是 json 格式

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/人工智能uu/article/detail/966504
推荐阅读
相关标签
  

闽ICP备14008679号