大数据-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服务,测试效果。

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

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

相关文章

轻量级可视化数据分析报表,分组汇总表!

什么是可视化分组汇总表&#xff1f; 可视化分组汇总表&#xff0c;是一种结合了数据分组、聚合计算与视觉呈现功能的数据分析展示功能。它能够按照指定的维度&#xff08;如时间、地区、产品类型等&#xff09;对数据进行分组&#xff0c;还能自动计算各组的统计指标&#xf…

mongodb-7.0.14分片副本集超详细部署

mongodb介绍&#xff1a; 是最常用的nosql数据库&#xff0c;在数据库排名中已经上升到了前六。这篇文章介绍如何搭建高可用的mongodb&#xff08;分片副本&#xff09;集群。 环境准备 系统系统 BC 21.10 三台服务器&#xff1a;192.168.123.247/248/249 安装包&#xff1a…

SQL Injection | SQL 注入 —— 报错盲注

关注这个漏洞的其他相关笔记&#xff1a;SQL 注入漏洞 - 学习手册-CSDN博客 0x01&#xff1a;报错盲注 —— 理论篇 报错盲注&#xff08;Error-Based Blind SQL Injection&#xff09;是一种常见的 SQL 注入技术&#xff0c;适用于那些页面不会直接显示后端处理结果的查询方式…

安装nginx实现多ip访问多网站

关闭防火墙并停selinux&#xff1a; 挂载&#xff1a; 安装nginx&#xff1a; 判断nginx是否成功启动&#xff1a; 打开nmtui并添加多个ip&#xff1a; 重启nmtui&#xff1a; 查看多ip是否配置成功: 配置文件&#xff1a; 创建文件&#xff1a; 根据配置在主机创建数据文件&a…

高翔【自动驾驶与机器人中的SLAM技术】学习笔记(十一)ESKF中融合速度观测量;发散的原因;如何解决发散;以及对slam的理解

带着问题去学习: 1、slam发散的原因? 2、如何解决/限制发散? 3、如何在已经有观察值和预测值的ESKF中,再引入一个其他其他观察量? 一、多传感器融合的思考——轮速计 反思为何需要融合多个传感器? 我认为根本上的原因,是因为有些传感器在某些场景下会失灵、效果不佳…

aws(学习笔记第七课) 私有子网使用NAT服务器

aws(学习笔记第七课) AWS的私有子网使用NAT服务器 学习内容&#xff1a; AWS的私有子网使用NAT服务器 1. AWS的私有子网使用NAT服务器 在上面的例子的网络构成图中&#xff0c;可能会发现一个问题。就是Private Subnet的Apache server无法访问互联网。比如&#xff0c;当需要…

云计算-----单机LNMP结构WordPress网站

LNMP结构 博客网站 day1 小伙伴们&#xff0c;LNMP结构在第一二阶段浅浅的学习过&#xff0c;这里我们可以离线部署该结构。L指&#xff08;虚拟机&#xff09;服务器&#xff0c;nginx&#xff08;前端代理服务器&#xff09;mysql数据库&#xff0c;最后基于php建设动态…

DockerCompose快速部署Java项目、nginx前端和mysql数据库到centos虚拟机

简介&#xff1a;整理自&#xff1a;SpringCloud微服务开发与实战&#xff0c;java黑马商城项目微服务实战开发&#xff08;涵盖MybatisPlus、Docker、MQ、ES、Redis高级等&#xff09;课程的飞书文档。 DockerCompose介绍 大家可以看到&#xff0c;我们部署一个简单的java项…

黑马程序员Java笔记整理(day03)

1.switch 2.for与while对比 3.嵌套定义,输出的区别性 4.break与continue 5.随机数生成的两种方式 6.Random 7.随机验证码

到底是微服务,还是SOA?

引言&#xff1a;大概正式工作有5年了&#xff0c;换了三个大厂【也是真特么世道艰难&#xff0c;中国互联网人才饱和了】。基本上每个公司有的架构都不太相同&#xff0c;干过TOC和TOB的业务&#xff0c;但是大家用的架构都不太相同。有坚持ALL in one的SB&#xff0c;最后服务…

【Linux】并行与并发(含时间片)

简单来说 并发&#xff1a;多个进程轮流使用同一个CPU&#xff0c;在逻辑层面上&#xff0c;一段时间内推进完成了多个进程 并行&#xff1a;机器中有多个CPU可以使用&#xff0c;在物理层面上&#xff0c;做到同一时间会有多个进程同时在运行 举个例子&#xff1a;一群人需要…

深入理解WPF中的命令机制

Windows Presentation Foundation&#xff08;WPF&#xff09;是微软推出的一种用于构建桌面客户端应用程序的技术。它被认为是现代Windows应用程序的基础&#xff0c;具有强大的图形和媒体处理能力。在WPF中&#xff0c;“命令”是一个重要的概念&#xff0c;它为应用程序开发…

Mybatis操作

一、Mybatis基础操作 准备 准备数据库表 emp 1.创建一个新的springboot工程&#xff0c;选择引入对应的起步依赖&#xff08;mybatis、mysql驱动、lombok&#xff09; 2.application.properties中引入数据库连接信息 3.创建对应的实体类 Emp&#xff08;实体类属性采用驼峰…

②PROFINET转ModbusTCP, EtherCAT/Ethernet/IP/Profinet/ModbusTCP协议互转工业串口网关

EtherCAT/Ethernet/IP/Profinet/ModbusTCP协议互转工业串口网关https://item.taobao.com/item.htm?ftt&id822721028899 协议转换通信网关 PROFINET 转 Modbus TCP &#xff08;接上一章&#xff09; 配置使用 与 PROFINET 主站进行组态说明 这里介绍与西门子 PLC 的…

git分支模型

定义分支 长期分支 指长期存在的分支&#xff0c;也叫固定分支 developmaster 短期分支 短分支没有固定的分支名。但是有分支名规范 feature分支hotfix分支 分支模型 暂时无法在文档外展示此内容 参考 分支的目的是隔离&#xff0c;但多一个分支也意味着维护成本的增加。…

NFT Insider #152:The Sandbox Alpha 第4季开启

市场数据 加密艺术及收藏品新闻 Realm of Historia 推出首个以古老文化遗址为主题的 NFT 系列 专注于文化遗产保护的区块链平台 Realm of Historia 正通过推出首个 NFT 系列扩大其全球影响力。该系列以亚美尼亚的古代遗址 Carahunge 为主题&#xff0c;这一遗址已有 7500 多年…

EDM邮件营销,如何确保高频率发送不触发限制

EDM邮件营销需选对平台&#xff0c;遵守反垃圾邮件法规&#xff0c;高效管理邮件列表&#xff0c;合理制定发送频率&#xff0c;优化内容与设计&#xff0c;用智能化工具测试与优化&#xff0c;监控送达和反馈&#xff0c;维持良好ISP关系&#xff0c;确保高效安全发送不封号。…

13.3寸三防平板大尺寸+高速运行提升工业软件操作体验

在工业领域&#xff0c;移动设备的应用日益广泛&#xff0c;其性能直接影响着工作效率和数据安全。传统的工业平板电脑常常面临着屏幕尺寸过小、运行速度缓慢、以及抗环境能力不足等问题&#xff0c;这些都制约了工业软件的流畅运行和高效应用。而一款搭载先进硬件配置的13.3寸…

线性代数基础02_矩阵(下)向量

目录 一、矩阵&#xff08;下&#xff09; 1、伴随矩阵 2、逆矩阵 3、初等变换 4、矩阵的标准形 4.1行阶梯形矩阵 4.2简化行阶梯型矩阵 二、向量 1、定义 2、向量的运算 3、矩阵的特征值和特征向量 4、向量的模 5、向量的内积 一、矩阵&#xff08;下&#xff09;…

动态规划-子数组系列——乘积最大子数组

1.题目解析 题目来源&#xff1a;152.乘积最大子数组——力扣 测试用例 2.算法原理 1.状态表示 由于题目给的数组中可以包含负数&#xff0c;因此求最大乘积有两种情况&#xff1a; a.负数乘以最小数得出最大乘积 b.整数乘以最大数得出最大乘积 所以需要两个表分别求出最大最…