> 文章列表 > ES集群配置和分词器(九)

ES集群配置和分词器(九)

ES集群配置和分词器(九)

一直在坑自己家人,对,说的就是你,大A.

上一章简单介绍了SpringBoot整合 EasyES (八), 如果没有看过,请观看上一章

一. Windows 集群部署

一.一 服务复制

将 es 复制3份

ES集群配置和分词器(九)

一.二 配置文件配置

每个服务节点的 config/eslsticsearch.yml 配置文件

一.二.一 第一个节点

#节点 1 的配置信息: #集群名称,节点之间要保持一致 
cluster.name: my-elasticsearch 
#节点名称,集群内要唯一 
node.name: node-1001 
node.master: true 
node.data: true
#ip 地址
network.host: localhost 
#http 端口 
http.port: 1001 
#tcp 监听端口
transport.tcp.port: 9301
#discovery.seed_hosts: ["localhost:9301", "localhost:9302","localhost:9303"] #discovery.zen.fd.ping_timeout: 1m #discovery.zen.fd.ping_retries: 5
#集群内的可以被选为主节点的节点列表 #cluster.initial_master_nodes: ["node-1", "node-2","node-3"]
#跨域配置
#action.destructive_requires_name: true 
http.cors.enabled: true 
http.cors.allow-origin: "*"

一.二.二 第二个节点

#节点 2 的配置信息: #集群名称,节点之间要保持一致 
cluster.name: my-elasticsearch 
#节点名称,集群内要唯一 
node.name: node-1002 
node.master: true 
node.data: true
#ip 地址
network.host: localhost 
#http 端口 
http.port: 1002 
#tcp 监听端口
transport.tcp.port: 9302
discovery.seed_hosts: ["localhost:9301"] 
discovery.zen.fd.ping_timeout: 1m 
discovery.zen.fd.ping_retries: 5
#集群内的可以被选为主节点的节点列表 #cluster.initial_master_nodes: ["node-1", "node-2","node-3"]
#跨域配置
#action.destructive_requires_name: true 
http.cors.enabled: true 
http.cors.allow-origin: "*"

一.二.三 第三个节点

#节点 3 的配置信息: #集群名称,节点之间要保持一致 
cluster.name: my-elasticsearch 
#节点名称,集群内要唯一 
node.name: node-1003
node.master: true 
node.data: true
#ip 地址
network.host: localhost 
#http 端口 
http.port: 1003 
#tcp 监听端口
transport.tcp.port: 9303
discovery.seed_hosts: ["localhost:9301","localhost:9302"] 
discovery.zen.fd.ping_timeout: 1m 
discovery.zen.fd.ping_retries: 5
#集群内的可以被选为主节点的节点列表 #cluster.initial_master_nodes: ["node-1", "node-2","node-3"]
#跨域配置
#action.destructive_requires_name: true 
http.cors.enabled: true 
http.cors.allow-origin: "*"

一.三 移除数据

分别将 data 下的 nodes 目录全部删除, 即移除数据

ES集群配置和分词器(九)

再依次启动3个服务

ES集群配置和分词器(九)

ES集群配置和分词器(九)

ES集群配置和分词器(九)

一.四 测试集群状态

查看节点1

ES集群配置和分词器(九)

查看节点2

ES集群配置和分词器(九)

查看节点3

ES集群配置和分词器(九)

其中, status 为 green, 指示的是当前集群在总体上是否工作正常。

green 所有的主分片和副本分片都正常运行

yellow 所有的主分片都正常运行, 但不是所有的副本分片都正常运行

red 有主分片没能正常运行

往集群1中 添加索引

ES集群配置和分词器(九)

集群2 中查询索引

ES集群配置和分词器(九)

将节点3 关闭后再次查询

ES集群配置和分词器(九)

将节点1 关闭后再次查询, 可以发现, 整个服务是不可用的状态。

二. 分词

二.一 IK 分词器

二.一.一 安装和使用 IK 分词器

不使用 IK 中文分词器时

GET		http://127.0.0.1:9200/_analyze{"text": "测试单词"
}

ES集群配置和分词器(九)

拆成了 四个中文词

可以使用 中文分词器, 一般使用的是 IK

下载地址:

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

将解压后的后的文件夹放入 ES 根目录下的 plugins 目录下,重启 ES 即可使用

ES集群配置和分词器(九)

再次查询

{"text": "测试单词","analyzer": "ik_max_word"
}

测试是一个词, 单词又是一个词。

ES集群配置和分词器(九)

  • ik_max_word:会将文本做最细粒度的拆分

  • ik_smart:会将文本做最粗粒度的拆分

二.一.二 扩展词汇

{"text": "岳泽霖","analyzer": "ik_max_word"
}

我们使用 岳泽霖, 拆分成了 3个字

ES集群配置和分词器(九)

如果希望其拆分成 岳 和泽霖, 我们可以这样操作

首先进入 ES 根目录中的 plugins 文件夹下的 ik 文件夹,进入 config 目录,创建 custom.dic 文件,写入 岳 和泽霖

ES集群配置和分词器(九)

同时打开 IKAnalyzer.cfg.xml 文件,将新建的 custom.dic 配置其中

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties><comment>IK Analyzer 扩展配置</comment><!--用户可以在这里配置自己的扩展字典 --><entry key="ext_dict">custom.dic</entry><!--用户可以在这里配置自己的扩展停止词字典--><entry key="ext_stopwords"></entry><!--用户可以在这里配置远程扩展字典 --><!-- <entry key="remote_ext_dict">words_location</entry> --><!--用户可以在这里配置远程扩展停止词字典--><!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>

重启 ES 服务器

发现是生效的

ES集群配置和分词器(九)

同时,也不会影响之前的

ES集群配置和分词器(九)

二.二 自定义分析器

​ 虽然 Elasticsearch 带有一些现成的分析器,然而在分析器上 Elasticsearch 真正的强大之处在于,

你可以通过在一个适合你的特定数据的设置之中组合字符过滤器、分词器、词汇单 元过滤器来创建自定义的分析器。

在 分析与分析器 我们说过,一个 分析器 就是在一个包 里面组合了三种函数的一个包装器, 三种函数按照顺序被执行:

二.二.一 字符过滤器

字符过滤器 用来 整理 一个尚未被分词的字符串。例如,如果我们的文本是HTML格式的,它会包含像 <p> 或者 <div> 这样的 HTML 标签,这些标签是我们不想索引的。我 们可以使用 html 清除 字符过滤器 来移除掉所有的HTML标签,

并且像把 Á 转换 为相对应的Unicode 字符 Á 这样,转换HTML实体。
一个分析器可能有 0 个或者多个字符 过滤器。

二.二.二 分词器

​ 一个分析器 必须 有一个唯一的分词器。 分词器把字符串分解成单个词条或者词汇单元。

标准 分析器里使用的 标准 分词器 把一个字符串根据单词边界分解成单个词条,并 且移除掉大部分的标点符号,然而还有其他不同行为的分词器存在。

例如, 关键词 分词器 完整地输出 接收到的同样的字符串,并不做任何分词。 空格 分词 器 只根据空格分割文本 。

​ 正则 分词器 根据匹配正则表达式来分割文本

二.二.三 词单元过滤器

​ 经过分词,作为结果的 词单元流 会按照指定的顺序通过指定的词单元过滤器 词单元过滤器可以修改、添加或者移除词单元。

我们已经提到过 lowercase 和 stop 词过滤 器 ,但是在 Elasticsearch 里面还有很多可供选择的词单元过滤器。

词干过滤器 把单词 遏 制 为 词干。 ascii_folding 过滤器移除变音符,把一个像 “très” 这样的词转换为 “tres”

ngram 和 edge_ngram 词单元过滤器 可以产生 适合用于部分匹配或者自动补全的词单元。

二. 二.四 自定义分析器

索引还未创建

{"settings": {"analysis": {"char_filter": {"&_to_and": {"type": "mapping","mappings": ["&=> and "]}},"filter": {"my_stopwords": {"type": "stop","stopwords": ["the","a"]}},"analyzer": {"my_analyzer": {"type": "custom","char_filter":[ "html_strip", "&_to_and" ],"tokenizer": "standard","filter": [ "lowercase", "my_stopwords" ]}}}}
}

ES集群配置和分词器(九)

索引创建成功, 测试分词

{"text": "The quick & brown fox","analyzer": "my_analyzer"
}

会分成这四个

ES集群配置和分词器(九)

三. ES 可视化工具 Kibana

​ Kibana 是一个免费且开放的用户界面,能够让你对 Elasticsearch 数据进行可视化,

并让你在 Elastic Stack 中进行导航。你可以进行各种操作,从跟踪查询负载,到理解请求如 何流经你的整个应用,都能轻松完成。

下载地址:https://artifacts.elastic.co/downloads/kibana/kibana-7.8.0-windows-x86_64.zip

解压缩下载的 zip 文件

ES集群配置和分词器(九)

修改 config/kibana.yml 文件

# 默认端口
server.port: 5601 
# ES服务器的地址
elasticsearch.hosts: ["http://localhost:9200"] 
# 索引名
kibana.index: ".kibana" 
# 支持中文
i18n.locale: "zh-CN"

启动 bin/kibana.bat

ES集群配置和分词器(九)

ES集群配置和分词器(九)

http://localhost:5601/app

ES集群配置和分词器(九)

谢谢您的观看,如果喜欢,请关注我,再次感谢 !!!