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

news2024/11/15 7:22:30

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

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

一. Windows 集群部署

一.一 服务复制

将 es 复制3份

image-20230411163323347

一.二 配置文件配置

每个服务节点的 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 目录全部删除, 即移除数据

image-20230411163121402

再依次启动3个服务

image-20230411163833831

image-20230411163816493

image-20230411163801029

一.四 测试集群状态

查看节点1

image-20230411164010543

查看节点2

image-20230411164046432

查看节点3

image-20230411164112073

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

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

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

red 有主分片没能正常运行

往集群1中 添加索引

image-20230411164346089

集群2 中查询索引

image-20230411164456108

将节点3 关闭后再次查询

image-20230411164618702

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

二. 分词器

二.一 IK 分词器

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

不使用 IK 中文分词器时

GET		http://127.0.0.1:9200/_analyze

{
    "text": "测试单词"
}

image-20230411165312316

拆成了 四个中文词

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

下载地址:

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

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

image-20230411165458047

再次查询

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

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

image-20230411165548856

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

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

二.一.二 扩展词汇

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

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

image-20230411165807081

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

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

image-20230411170322958

同时打开 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 服务器

发现是生效的

image-20230411171010479

同时,也不会影响之前的

image-20230411171047054

二.二 自定义分析器

​ 虽然 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" ]
                }
            }
        }
    }
}

image-20230411173101503

索引创建成功, 测试分词

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

会分成这四个

image-20230411173254069

三. ES 可视化工具 Kibana

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

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

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

解压缩下载的 zip 文件

image-20230411174034763

修改 config/kibana.yml 文件

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

启动 bin/kibana.bat

image-20230411174219794

image-20230411174258152

http://localhost:5601/app

image-20230411174554899


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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/431703.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AANet: CTPA图像中肺动脉栓塞检测的动脉感知网络

AANet: Artery-Aware Network for Pulmonary Embolism Detection in CTPA Images 摘要 肺栓塞(PE)是危及生命的疾病&#xff0c;计算机断层肺血管造影(CTPA)是临床上最好的诊断技术 然而&#xff0c;在CTPA图像中&#xff0c;PE通常表现为血液动脉明亮区域中的黑点&#xff0…

UE4/5多人游戏详解(一、基础理论与局域网内部的连接)

目录 多人游戏理论简单讲解 点对点&#xff1a; 于是&#xff0c;服务端和客户端的概念出现了&#xff1a; 局域网连接&#xff1a; 从第三人称c项目开始 创建项目&#xff1a; 以一个客户端作为监听服务器 3个客户端&#xff0c;在场景后方使用服务器&#xff1a; 局…

leetcode:同构字符串(详解)

前言&#xff1a;内容包括&#xff1a;题目&#xff0c;代码实现&#xff0c;大致思路&#xff0c;代码解读 题目&#xff1a; 给定两个字符串 s 和 t &#xff0c;判断它们是否是同构的。 如果 s 中的字符可以按某种映射关系替换得到 t &#xff0c;那么这两个字符串是同构…

数字营销(三)如何确定合适的流量渠道?

一、为什么要确定付费客户特征&#xff1f; 首先营销策略是什么&#xff1f;营销策略&#xff0c;即战略&#xff0c;就是为实现主要流量侧的长期目标&#xff0c;所采取的具体打法和步骤。 比如一个网站的成功离不开获取网站流量和用户信任的建立。除了谷歌 SEO 获取流量&am…

【JavaEE初阶】多线程(一)

摄影分享&#xff01; 文章目录 认识线程&#xff08;Thread&#xff09;概念执行多线程编程创建线程的写法1.继承Thread&#xff0c;重写run2.实现Runnable接口3.使用匿名内部类&#xff0c;继承Thread4.使用匿名内部类&#xff0c;实现Runable5.使用Lambda表达式 Thread用法…

【ARMv8/v9 MMU 页表配置 01 】

文章目录 1.1 MMU1.1.1 虚拟地址位宽配置1.1.2 页面大小(grandule size)配置1.1.3 AArch64 页表项描述符格式1.1.4 内存属性配置 1.1 MMU 1.1.1 虚拟地址位宽配置 64 位虚拟地址中&#xff0c;并不是所有位都用上&#xff0c;除了高 16 位用于区分内核空间和用户空间的虚拟地…

SpringCloud:ElasticSearch之数据聚合

聚合&#xff08;aggregations&#xff09; 可以让我们极其方便的实现对数据的统计、分析、运算。例如&#xff1a; 什么品牌的手机最受欢迎&#xff1f;这些手机的平均价格、最高价格、最低价格&#xff1f;这些手机每月的销售情况如何&#xff1f; 实现这些统计功能的比数据…

数组题目总结 -- 双指针

目录① 快慢指针&#xff1a;一. 删除有序数组中的重复项1. 思路和代码I. 博主的做法&#xff1a;II. 东哥的做法&#xff1a;2. 总结二. 删除排序链表中的重复元素&#xff08;扩展&#xff09;1. 思路和代码I. 博主的做法&#xff1a;II. 东哥的做法&#xff1a;2. 总结三. 移…

硬件语言Verilog HDL牛客刷题day08 综合部分

1. Johnson Counter 1.题目&#xff1a; 请用Verilog实现4位约翰逊计数器&#xff08;扭环形计数器&#xff09;&#xff0c;计数器的循环状态如下。 电路的接口如下图所示 2.解题思路 2.1 一个简单的状态机的配置。 2.2 注意 起始状态 是 0000 就行 3.解题代码 timescale …

动态内存管理——C语言【进阶】(下)

作者简介&#xff1a; 辭七七&#xff0c;目前大一&#xff0c;正在学习C/C&#xff0c;Java&#xff0c;Python等 作者主页&#xff1a; 七七的个人主页 文章收录专栏&#xff1a;进阶C语言&#xff0c;本专栏主要讲解数据存储&#xff0c;进阶指针&#xff0c;动态内存管理&a…

前端面试题 - 计算机网络与浏览器相关

系列文章目录 vue常见面试题总结 htmlcss 面试题总结附答案 初级前端面试题总结&#xff08;html, css, js, ajax&#xff0c;http&#xff09; js基础面试题整理(包含ES5&#xff0c;ES6) 文章目录 系列文章目录一、网络协议相关1. 从浏览器地址栏输入url到显示页面的步骤…

蓝桥杯欲伸手CTF?有多远爬多远

注意&#xff1a;网络安全类比赛 或者说 CTF 参赛不会需要任何费用 只有国赛/省赛有可能会收取一定运维费用 其他比赛都不会收费 望周知。 先来看个特离谱的事情 早上起床看到几位师傅的朋友圈一脸懵&#xff0c;再仔细一看&#xff0c;好嘛。。。。。。 先看看探姬的回复 接下…

人工智能大模型多场景应用原理解析

前言 在上篇文章《人工智能大模型之ChatGPT原理解析》中分享了一些大模型之ChatGPT的核心原理后&#xff0c;收到大量读者的反馈&#xff0c;诸如:在了解了核心原理后想进一步了解未来的发展趋势(比如生成式人工智能和元宇宙能擦出什么样的火花&#xff1f;)&#xff0c;大模型…

伪命题之MYSQL分库分表

看到使用分库分表来解决性能问题的时候心里总是不能太理解。 如果同事发生大量请求的时候&#xff0c;损害性能的是硬盘的随机读。那么分库分表也没有对性能的瓶颈进行“分治”啊。 应该的做法是使用一块新的硬盘来创建分库。但是基本的文章都没有提到这点。而且基本上也不会有…

价值导向型研发管理数字化建设方案——易趋亮相CCTI中国研发管理峰会

4月15日-16日&#xff0c;由光环国际举办的2023 CCTI中国研发管理峰会在北京中关村国家自主创新示范区会议中心成功举办。 &#xff08;现场签到处&#xff09; 此次峰会邀请了20余位来自腾讯、华为、网易、阿里云等知名企业的研发管理领域专家&#xff0c;带来最新前沿知识和内…

【网络安全知识体系】外网渗透测试 | 14个小实验

写在前面&#xff1a;视频地址 成功上岸360&#xff01;0基础网络安全 入行 到 入yu、漏洞挖掘-外网渗透测试流程目录 一、导读&#xff1a; 二、汇总&#xff1a; 三、知识导图 四、面试常见问题 五、渗透测试流程 1、简述&#xff1a; 2、寻找测试目标 3、信息收集 …

webgl-简单动画

html <!DOCTYPE html> <head> <style> *{ margin: 0px; padding: 0px; } </style> </head> <body> <canvas id webgl> 您的浏览器不支持HTML5,请更换浏览器 </canvas> <script src"./main.js"></script&g…

程序员必用的6个代码对比神器附下载地址

一、WinMerge WinMerge是一款基于Windows系统下的文件比较和合并工具&#xff0c;使用它可以非常方便地比较多个文档内容&#xff0c;适合程序员或经常需要撰写文稿的朋友使用。WinMerge会将两个文件内容做对比&#xff0c;并在相异之处以高亮度的方式显示&#xff0c;让使用者…

认识网络随机丢包

考虑一根漏水的管子&#xff0c;希望出水口接到和不漏的管子等量的水&#xff0c;要么靠时间&#xff0c;反复将漏掉的水重新注入&#xff0c;直到漏掉的水可忽略&#xff1a; ​ 要么靠空间&#xff0c;在漏的地方将管子加粗&#xff0c;一次性注入更多的水&#xff1a; 不…

什么是HTTP? HTTP和HTTPS的区别?

目录 1、什么是HTTP? 2、HTTP的特点 ① 支持客户/服务器模式 ② 简单快速 ③ 灵活 ④ 无连接 ⑤ 无状态 3、HTTPS 4、HTTP和HTTPS的区别 ① 安全性不同 ② 默认端口不同 ③ 响应速度和资源消耗不同 ④ 网站申请流程不同 ⑤ 对搜索排名的提升不同 1、什么是…