一直在坑自己家人,对,说的就是你,大A.
上一章简单介绍了SpringBoot整合 EasyES (八), 如果没有看过,请观看上一章
将 es 复制3份
每个服务节点的 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 目录全部删除, 即移除数据
再依次启动3个服务
查看节点1
查看节点2
查看节点3
其中, status 为 green, 指示的是当前集群在总体上是否工作正常。
green 所有的主分片和副本分片都正常运行
yellow 所有的主分片都正常运行, 但不是所有的副本分片都正常运行
red 有主分片没能正常运行
往集群1中 添加索引
集群2 中查询索引
将节点3 关闭后再次查询
将节点1 关闭后再次查询, 可以发现, 整个服务是不可用的状态。
不使用 IK 中文分词器时
GET http://127.0.0.1:9200/_analyze
{
"text": "测试单词"
}
拆成了 四个中文词
可以使用 中文分词器, 一般使用的是 IK
下载地址:
https://github.com/medcl/elasticsearch-analysis-ik/releases/tag/v7.8.0
将解压后的后的文件夹放入 ES 根目录下的 plugins 目录下,重启 ES 即可使用
再次查询
{
"text": "测试单词",
"analyzer": "ik_max_word"
}
测试是一个词, 单词又是一个词。
ik_max_word:会将文本做最细粒度的拆分
ik_smart:会将文本做最粗粒度的拆分
{
"text": "岳泽霖",
"analyzer": "ik_max_word"
}
我们使用 岳泽霖, 拆分成了 3个字
如果希望其拆分成 岳 和泽霖, 我们可以这样操作
首先进入 ES 根目录中的 plugins 文件夹下的 ik 文件夹,进入 config 目录,创建 custom.dic 文件,写入 岳 和泽霖
同时打开 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 服务器
发现是生效的
同时,也不会影响之前的
虽然 Elasticsearch 带有一些现成的分析器,然而在分析器上 Elasticsearch 真正的强大之处在于,
你可以通过在一个适合你的特定数据的设置之中组合字符过滤器、分词器、词汇单 元过滤器来创建自定义的分析器。
在 分析与分析器 我们说过,一个 分析器 就是在一个包 里面组合了三种函数的一个包装器, 三种函数按照顺序被执行:
字符过滤器 用来 整理 一个尚未被分词的字符串。例如,如果我们的文本是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" ]
}
}
}
}
}
索引创建成功, 测试分词
{
"text": "The quick & brown fox",
"analyzer": "my_analyzer"
}
会分成这四个
Kibana 是一个免费且开放的用户界面,能够让你对 Elasticsearch 数据进行可视化,
并让你在 Elastic Stack 中进行导航。你可以进行各种操作,从跟踪查询负载,到理解请求如 何流经你的整个应用,都能轻松完成。
下载地址:https://artifacts.elastic.co/downloads/kibana/kibana-7.8.0-windows-x86_64.zip
解压缩下载的 zip 文件
修改 config/kibana.yml 文件
# 默认端口
server.port: 5601
# ES服务器的地址
elasticsearch.hosts: ["http://localhost:9200"]
# 索引名
kibana.index: ".kibana"
# 支持中文
i18n.locale: "zh-CN"
启动 bin/kibana.bat
http://localhost:5601/app
谢谢您的观看,如果喜欢,请关注我,再次感谢 !!!