共计 3085 个字符,预计需要花费 8 分钟才能阅读完成。
@[toc]
本文是松哥所录视频教程的一个笔记,笔记简明扼要,残缺内容小伙伴们能够参考视频,视频下载链接:https://pan.baidu.com/s/1NHoe… 提取码: kzv7
1.ElasticSearch 分词器介绍
1.1 内置分词器
ElasticSearch 外围性能就是数据检索,首先通过索引将文档写入 es。查问剖析则次要分为两个步骤:
- 词条化:分词器 将输出的文本转为一个一个的词条流。
- 过滤:比方停用词过滤器会从词条中去除不相干的词条(的,嗯,啊,呢);另外还有同义词过滤器、小写过滤器等。
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 装置
两种应用形式:
第一种:
- 首先关上分词器官网:https://github.com/medcl/elas…。
- 在 https://github.com/medcl/elas… 页面找到最新的正式版,下载下来。咱们这里的下载链接是 https://github.com/medcl/elas…。
- 将下载文件解压。
- 在 es/plugins 目录下,新建 ik 目录,并将解压后的所有文件拷贝到 ik 目录下。
- 重启 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