大数据-172 Elasticsearch 索引操作 与 IK 分词器 自定义停用词 Nginx 服务
点一下关注吧!!!非常感谢!!持续更新!!!
目前已经更新到了:
- Hadoop(已更完)
- HDFS(已更完)
- MapReduce(已更完)
- Hive(已更完)
- Flume(已更完)
- Sqoop(已更完)
- Zookeeper(已更完)
- HBase(已更完)
- Redis (已更完)
- Kafka(已更完)
- Spark(已更完)
- Flink(已更完)
- ClickHouse(已更完)
- Kudu(已更完)
- Druid(已更完)
- Kylin(已更完)
- Elasticsearch(正在更新…)
章节内容
上节我们完成了如下的内容:
- ES-head 插件配置使用
- Kibana 插件配置使用

索引操作
创建索引库
Elasticsearch采用Rest风格API,因此其API就是一次HTTP请求,你可以用任何工具来发起HTTP请求。
语法:
PUT /索引名称
{"settings": {"属性名": "属性值"}
}
settings:就是索引库设置,其中可以索引库的各种属性,比如分片数、副本数等。目前我们不设置,先默认即可。
示例:
PUT /wzkicu-index
执行结果如下图:

判断索引是否存在
单个索引
语法:
GET /索引名称
示例:
GET /wzkicu-index
执行结果如下图所示:

多个索引
语法:
GET /索引名称1,2,3,4,5...
示例:
GET /wzkicu-index,wzkicu,wzk
执行结果如下图所示:(这里有不存在的索引,所以404了)

所有索引
方式1:
GET _all
执行结果如下图所示:

方式2:
GET /_cat/indices?v
执行结果如下图所示:

这里的health列,表示:
- 绿色:索引的所有分片都正常分配
- 黄色:至少有一个副本没有得到正确的分配
- 红色:至少有一个主分片没有得到正常的分配
打开索引
语法:
POST /索引名称/_open
示例:
POST /wzkicu-index/_open
执行结果如下图:

关闭索引
语法:
POST /索引名称/_close
示例:
POST /wzkicu-index/_close
执行结果如下图:

删除索引
语法:
DELETE /索引名称1,2,3,4,5...
示例:
DELETE /wzkicu-index
执行结果如下图所示:

IK分词器
下载项目
官方地址在这里,是GitHub开源的项目,安装方式很多,我这里就直接用官方的方式安装了:
https://github.com/infinilabs/analysis-ik/releases/tag/Latest
页面是这样的:

安装插件
cd /opt/servers/elasticsearch-7.3.0/
bin/elasticsearch-plugin install https://get.infini.cloud/elasticsearch/analysis-ik/7.3.0
执行结果如下图所示,我们需要重启ES:

重启ES
重启过程,启动完毕:

分词测试
IK分词器两种分词模式:
- ik_max_word 模式 (最常用)(会将文本最细粒度的拆分)
- ik_smart 模式 (会做最粗粒度的拆分)
暂时不细追究语法,先学习测试,再后续研究。
ik_max_word
POST _analyze
{"analyzer": "ik_max_word","text": "山东省青岛市黄岛区"
}
我们的到的结果是:
{"tokens": [{"token": "山东省","start_offset": 0,"end_offset": 3,"type": "CN_WORD","position": 0},{"token": "山东","start_offset": 0,"end_offset": 2,"type": "CN_WORD","position": 1},{"token": "省","start_offset": 2,"end_offset": 3,"type": "CN_CHAR","position": 2},{"token": "青岛市","start_offset": 3,"end_offset": 6,"type": "CN_WORD","position": 3},{"token": "青岛","start_offset": 3,"end_offset": 5,"type": "CN_WORD","position": 4},{"token": "市","start_offset": 5,"end_offset": 6,"type": "CN_CHAR","position": 5},{"token": "黄岛区","start_offset": 6,"end_offset": 9,"type": "CN_WORD","position": 6},{"token": "黄岛","start_offset": 6,"end_offset": 8,"type": "CN_WORD","position": 7},{"token": "区","start_offset": 8,"end_offset": 9,"type": "CN_CHAR","position": 8}]
}
执行的结果如下图所示:

ik_smart
POST _analyze
{"analyzer": "ik_smart","text": "山东省青岛市黄岛区"
}
执行的结果是:
{"tokens": [{"token": "山东省","start_offset": 0,"end_offset": 3,"type": "CN_WORD","position": 0},{"token": "青岛市","start_offset": 3,"end_offset": 6,"type": "CN_WORD","position": 1},{"token": "黄岛区","start_offset": 6,"end_offset": 9,"type": "CN_WORD","position": 2}]
}
执行的结果如下图所示:

提出问题
在实际环境中,有很多时候并不能够准确的理解我们断词断句,有时候有些词我们想要它拆分,有些词我们希望它不拆分。
那我们怎么办呢?
词典使用
扩展词
不进行分词,告诉引擎这是一个词。
停用词
有些词在文本中出现的频率非常高,但对本文的语义会产生很大的影响,例如:呢、了、啊等等,英语中也有类似于 a 、the、of 等等。这样的词称为停用词。
停用词经常会过滤掉,不会被索引,在检索过程中,如果用户的查询词中含有停用词,系统会自动过滤掉。
停用词可以加快索引的速度、减少索引库的大小。
扩展词、停用词应该统一维护,避免集群中多台导致节点各自维护自己的一份。这里我们计划使用Web的方式,将dict词库共享给分词器等。
分词服务
配置Web
我这里使用 Nginx,你也可以使用 Tomcat:
apt install nginx
安装过程如下图所示:

访问页面:http://h121.wzk.icu,可以看到Nginx顺利运行:

编写dict内容:
vim /var/www/html/stop_dict.dic
向其中写入的内容如下:
的
了
啊
呢
同理,我们写入 ext_dict.dic:
vim /var/www/html/ext_dict.dic
我们访问对应的页面,可以拿到对应的Web文件:

配置分词器
# 这里看自己的版本 我选了好几个
cd /opt/servers/elasticsearch-8.15.0/plugins/analysis-ik
mkdir config
vim IKAnalyzer.cfg.xml
写入如下的内容:
<?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"></entry><!--用户可以在这里配置自己的扩展停止词字典--><entry key="ext_stopwords"></entry><!--用户可以在这里配置远程扩展字典 --><entry key="remote_ext_dict">http://h121.wzk.icu/ext_dict.dic</entry><!--用户可以在这里配置远程扩展停止词字典--><entry key="remote_ext_stopwords">http://h121.wzk.icu/stop_dict.dic</entry>
</properties>
对应的截图如下所示:

重启服务
重启ES服务,测试效果。
相关文章:
大数据-172 Elasticsearch 索引操作 与 IK 分词器 自定义停用词 Nginx 服务
点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…...
【Java后端】之 ThreadLocal 详解
想象一下,你有一个工具箱,里面放着各种工具。在多人共用这个工具箱的时候,很容易出现混乱,比如有人拿走了你的锤子,或者你找不到合适的螺丝刀。为了避免这种情况,最好的办法就是每个人都有自己独立的工具箱…...
2.链表(代码随想录——python版本)
2.链表(代码随想录——python版本) 链表的概念: 链表是由指针串联在一起的线性结构,一个节点(node)由两部分组成: 数据域——用来存储数据;指针域——用来指向下一个节点…...
6个解决“由于找不到vcruntime140_1.dll无法继续执行代码”问题的方法
vcruntime140_1.dll丢失的问题在Windows操作系统中相对常见,它通常与Microsoft Visual C Redistributable有关。本文将详细解读vcruntime140_1.dll丢失的原因、解决方法以及预防措施,帮助用户更好地应对这一问题。 一,vcruntime140_1.dll文件…...
常用数据库获取表,视图,列,索引信息
一、分页获取数据库用户的所有表 (1)、Oracle,OceanBase(Oracle内核版),DM 使用ALL_TABLES,需要添加当前用户作为查询条件 select a3.* from (select a2.* from (select a1.*, rownum rn1 from ( select t1.table_name, t2.comments fro…...
架构设计笔记-16-嵌入式系统架构设计理论与实践
目录 知识要点 嵌入式微处理器 存储器(memory) 内(外)总线逻辑 嵌入式操作系统(Embedded Operating System,EOS) 通用中间件 嵌入式中间件的一般架构 典型嵌入式中间件系统 案例分析 1…...
SpringSecurity使用介绍
1、SpringSecurity 1.1 SpringSecurity简介 Spring Security是基于Spring的安全框架,提供了包含认证和授权的落地方案;Spring Security底层充分利用了Spring IOC和AOP功能,为企业应用系统提供了声明式安全访问控制解决方案;SpringSecurity可…...
# Js 回调函数
Js 回调函数 文章目录 Js 回调函数回调函数的定义和使用回调函数的常见用途异步操作事件处理 回调函数的优点和缺点优点缺点 回调地狱解决回调地狱的方法使用 Promise使用 async/await 应用函数式编程中的回调函数高阶函数函数柯里化 异步编程中的回调函数回调函数的错误处理传…...
COOLSHELL文章:从Code Review 谈如何做技术【阅读笔记】
从Code Review 谈如何做技术原文链接:https://coolshell.cn/articles/11432.html#google_vignette 工程师需要有责任心和修养,不是做出来就了事,而是要做漂亮。 这也是山寨和工业的区别,只以做出来为标准是劳动密集型的装配生产线…...
3.1.1 ReactOS系统中二叉树创建一个MEMORY_AREA节点
二叉树中创建一个MEMORY_AREA节点: 二叉树中创建一个MEMORY_AREA节点: MmCreateMemoryArea() 参数AddressSpace是MADDRESS SPACE结构指针,所指向的数据结构代表着一个进程的用 户空间。 参数BaseAddress是个指针,用来给定和返回内…...
三、Linux 安装全攻略
Linux 安装全攻略 在当今的科技时代,Linux 操作系统以其稳定性、安全性和高度的可定制性而备受青睐。本文将详细介绍 Linux 的安装过程,包括关键步骤和下载资源获取方式,帮助你顺利踏上 Linux 之旅。 一、为什么选择 Linux Linux 有许多优…...
Ansible自动化工具
一、Ansible概述 1.1 什么是Ansible Ansible 是一个开源的自动化工具,用于配置管理、应用程序部署和任务自动化。它让你可以通过编写简单的 YAML 文件(剧本,Playbooks),轻松管理和配置多个服务器。Ansible 的特点是无…...
Flutter Container组件
Over the past few years, I’ve been fortunate to collaborate with interior designers, and there’s a distinct flair to their approach to crafting captivating interiors. It’s not just about arranging furniture randomly; they meticulously plan layouts, sele…...
IPv6 DNS简介
IPv6网络中的每台主机都是由IPv6地址来标识的,用户只有获得待访问主机的IPv6地址,才能够成功实现访问操作。对于用户来讲,记住主机的IPv6地址是相当困难的,因此设计了一种字符串形式的主机命名机制,这就是域名系统。用…...
【Python-AI篇】数据结构和算法
1. 算法概念 1.1 什么是数据结构 存储,组织数据的方式 1.2 什么是算法 实现业务目的的各种方法和思路算法是独立的存在,只是思想,不依附于代码和程序,可以使用不同语言实现(java,python,c&a…...
VideoCLIP-XL:推进视频CLIP模型对长描述的理解
摘要 对比语言-图像预训练(CLIP)已被广泛研究并应用于众多领域。然而,预训练过程中对简短摘要文本的重视阻碍了CLIP理解长描述的能力。在视频方面,这个问题尤为严重,因为视频通常包含大量详细内容。在本文中ÿ…...
【vue】vue-router_ vue3路由管理器
代码获取 vue-router_ vue3路由管理器 ⼀、基本介绍 1. 单⻚应⽤程序介绍 1.1 概念 单⻚应⽤程序:SPA(Single Page Application)是指所有的功能都在⼀个HTML⻚⾯上实现 1.2 具体⽰例 单⻚应⽤⽹站: ⽹易云⾳乐 https://music.163.com/ 多⻚应⽤⽹…...
昇思MindSpore进阶教程--Diffusion扩散模型(上)
大家好,我是刘明,明志科技创始人,华为昇思MindSpore布道师。 技术上主攻前端开发、鸿蒙开发和AI算法研究。 努力为大家带来持续的技术分享,如果你也喜欢我的文章,就点个关注吧 正文 关于扩散模型(Diffusi…...
Nginx:proxy_pass指令
proxy_pass 指令在 Nginx 中是实现反向代理和负载均衡的重要指令。 一. 反向代理 在反向代理的场景下,proxy_pass 指令用于将接收到的请求转发给另一个后端服务器。后端服务器地址可以是 IP 地址加端口、域名加端口、或者一个完整的 URL。 注意事项 proxy_pass …...
【AI学习】Mamba学习(十):HiPPO总结
前面用五篇文章陆续学了HiPPO框架。 这里再进行一下总结。 总结 HiPPO,高阶多项式投影,high-order polynomial projection operators 为了解决从序列数据中建模和学习的问题,尤其是长序列,十万甚至百万长度的序列,使…...
ARM架构ADD/AND指令详解与应用优化
1. ARM指令集基础与ADD/AND指令概述在嵌入式系统和移动计算领域,ARM架构凭借其高效能低功耗的特性占据主导地位。作为RISC(精简指令集计算机)架构的代表,ARM指令集的设计哲学是通过精简而高效的指令完成复杂任务。其中,…...
GPU缓存架构优化与AI加速器内存技术解析
1. GPU缓存架构与AI加速器的内存挑战在AI计算领域,内存子系统已成为制约性能提升的关键瓶颈。传统GPU采用的多级缓存架构(L1/L2/L3)虽然能有效缓解"内存墙"问题,但随着Transformer等大模型参数量呈指数级增长࿰…...
QT无边框窗口实战:从圆角绘制到自定义标题栏与拖拽交互
1. 为什么需要无边框窗口? 现代桌面应用越来越注重视觉体验,传统的系统标题栏往往与整体设计风格格格不入。想象一下,你精心设计了一款深色主题的音乐播放器,顶部却突兀地挂着Windows默认的白色标题栏——这种割裂感正是无边框窗口…...
HLK-V20语音模块的智能家居实战:如何用STM32控制灯、电机并连接ESP8266上云
HLK-V20语音模块的智能家居实战:STM32联动控制与云端接入全解析 在智能家居DIY领域,语音控制早已从概念走向现实。HLK-V20作为一款高性价比的纯离线语音识别模块,配合STM32的丰富外设控制能力,可以构建出响应迅速、隐私安全的本地…...
【免费下载】 华为光猫超级用户名密码获取工具
华为光猫超级用户名密码获取工具 【下载地址】华为光猫超级用户名密码获取工具 华为光猫超级用户名密码获取工具是一款专为华为光猫设计的辅助工具,主要用于获取光猫的VLAN ID。该工具通过将一系列命令编写成批处理文件,实现自动化执行,无需用…...
一款强大的PHP视频播放器:轻松嵌入,高效播放
一款强大的PHP视频播放器:轻松嵌入,高效播放 【下载地址】PHP视频播放器源码 本仓库提供了一个PHP视频播放器的源码,支持播放m3u8和mp4格式的资源。该播放器可以直接嵌入到网站中,方便用户在线观看视频内容 项目地址: https://g…...
ClassiCube多平台适配技术:从桌面到移动再到游戏主机的实现细节
ClassiCube多平台适配技术:从桌面到移动再到游戏主机的实现细节 【免费下载链接】ClassiCube Custom Minecraft Classic / ClassiCube client written in C from scratch (formerly ClassicalSharp in C#) 项目地址: https://gitcode.com/gh_mirrors/cla/ClassiCu…...
如何快速掌握炉石传说游戏自动化:开源智能助手完整教程
如何快速掌握炉石传说游戏自动化:开源智能助手完整教程 【免费下载链接】Hearthstone-Script Hearthstone script(炉石传说脚本) 项目地址: https://gitcode.com/gh_mirrors/he/Hearthstone-Script 你是否厌倦了每天重复的炉石传说日常…...
本地部署 SQLite 数据库管理工具 SQLite Web 并实现外部访问( Linux 版本)
SQLite Web 是一款轻量级的、基于 Web 的图形化界面工具,用于浏览和管理 SQLite 数据库文件,它通常以一个独立的可执行文件或 Python 包的形式存在,让用户可以通过浏览器方便地查看、查询、编辑和管理 .db 或 .sqlite 等 SQLite 数据库。本文…...
互联网大厂 Java 面试:搞笑程序员与严肃面试官的较量
面试荒唐记:从 Java SE 到微服务的奇妙之旅在某个互联网大厂的面试现场,严肃的面试官和搞笑的程序员燕双非展开了一场针锋相对的较量。从Java SE到微服务,燕双非用他机智的回答打破了沉闷的气氛,然而在复杂问题面前又显得有些捉襟…...
