关于java:ElasticSearch-中的中文分词器以及索引基本操作详解

50次阅读

共计 3085 个字符,预计需要花费 8 分钟才能阅读完成。

@[toc]
本文是松哥所录视频教程的一个笔记,笔记简明扼要,残缺内容小伙伴们能够参考视频,视频下载链接:https://pan.baidu.com/s/1NHoe… 提取码: 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/elas…

1.2.1 装置

两种应用形式:

第一种:

  1. 首先关上分词器官网:https://github.com/medcl/elas…。
  2. 在 https://github.com/medcl/elas… 页面找到最新的正式版,下载下来。咱们这里的下载链接是 https://github.com/medcl/elas…。
  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

正文完
 0