分布式搜索引擎ES-Elasticsearch进阶
1.head与postman基于索引的操作
引入概念:
集群健康:
green
所有的主分片和副本分片都正常运行。你的集群是100%可用
yellow
所有的主分片都正常运行,但不是所有的副本分片都正常运行。
red
有主分片没能正常运行。
查询es集群健康状态:
192.168.56.102:9200/_cluster/health
删除index:
创建index:
单个查询 get /index_temp:
查看所有索引:get /_cat/indices?v
2.mappings自定义创建映射
设置相应的数据结构:(mapping,就是定义数据的类型)
Index:false:表示不被识别,如果存放私密信息的时候设置为FALSE
text与keyword异同:
同:都是String
异:text大的文本,需要分词;keyword:精确匹配的搜索,微信号,手机号,QQ号等无需分词
创建索引的同时创建mapping
PUT /index_str
{"mappings": {"properties": {"realname": {"type": "text","index": true},"username": {"type": "keyword","index": false}}}
}
为已经存在的索引创建mappings或者创建mappings
POST /index_str/_mapping
{"properties": {"id": {"type": "long"},"age": {"type": "integer"},"nickname": {"type": "keyword"},"money1": {"type": "float"},"money2": {"type": "double"},"sex": {"type": "byte"},"score": {"type": "short"},"is_teenager": {"type": "boolean"},"birthday": {"type": "date"},"relationship": {"type": "object"}}
}
注:某个属性一旦被建立,就不能修改了,但是可以新增额外属性
主要数据类型
text, keyword, string
long, integer, short, byte
double, float
boolean
date
object
数组不能混,类型一致
字符串:text:文字类需要被分词倒排序索引的内容,比如:商品名称,商品详情,商品介绍
Keyword:不会被分词,不会被倒排序索引,直接匹配搜索,比如:订单状态,qq号等
3.mappings新增数据类型与analyze
查看分词效果:
GET /index_mapping/_analyze
{
“field”: “realname”,
“text”: “food is good”
}
尝试修改
POST /index_str/_mapping
{
“properties”: {
“name”: {
“type”: “long”
}
}
}
4.文档的基本操作-添加文档与自动映射
添加文档数据:
POST /my_doc/_doc/1 -> {索引名}/_doc/{索引ID}(是指索引在es中的id,而不是这条记录的id,比如记录的id从数据库来是1001,并不是这个。如果不写,则自动生成一个字符串。建议和数据id保持一致> )
{"id": 1001,"name": "nly-1","desc": "xhw is very good, 新华网非常牛!","create_date": "2019-12-24"
}{"id": 1002,"name": "nly-2","desc": "xhw is fashion, 新华网非常时尚!","create_date": "2019-12-25"
}{"id": 1003,"name": "nly-3","desc": "xhw is niubility, 新华网很好很强大!","create_date": "2019-12-26"
}{"id": 1004,"name": "nly-4","desc": "xhw is good~!","create_date": "2019-12-27"
}{"id": 1005,"name": "nly-5","desc": "新华网 is 强大!","create_date": "2019-12-28"
}{"id": 1006,"name": "nly-6","desc": "新华网是一个强大网站!","create_date": "2019-12-29"
}{"id": 1007,"name": "nly-7","desc": "新华网是很牛网站!","create_date": "2019-12-30"
}{"id": 1008,"name": "nly-8","desc": "新华网是很好看!","create_date": "2019-12-31"
}{"id": 1009,"name": "nly-9","desc": "在新华网学习很久!","create_date": "2020-01-01"
}
使用_doc创建时无法创建mapping。
如何增加数据:
_doc:表示如何创建文档;1表示文档名称
创建数据:对应数据库中创建一条完成的数据
区别_id与id,id一般是数据来源,可能是数据库中的id,_id就是文档的id,索引库的主键
如果索引没有手动建立mappings,那么当插入文档数据的时候,会根据文档类型自动设置属性类型。这个就是es的动态映射,帮我们在index索引库中去建立数据结构的相关配置信息。
“fields”: {“type”: “keyword”}
对一个字段设置多种索引模式,使用text类型做全文检索,也可使用keyword类型做聚合和排序
“ignore_above” : 256
设置字段索引和存储的长度最大值,超过则被忽略
5.文档的基本操作-删除与修改
文档的删除不是立即删除,文档还是保存在磁盘上,索引增长越来越多,才会把那些曾经标识过删除的,进行清理,从磁盘上移出去。
删除:删除文档中的一条数据
DELETE /my_doc/_doc/1
修改:修改某一条数据中的一部分(不添加update也可以实现)
POST /my_doc/_doc/1/_update
{
“doc”: {
“name”: “慕课”
}
}
全量替换:替换一条完整的文档(数据)
PUT /my_doc/_doc/1
{
“id”: 1001,
“name”: “imooc-1”,
“desc”: “imooc is very good, 慕课网非常牛!”,
“create_date”: “2019-12-24”
}
注意:每次修改后,version会更改
6.文档的基本操作-查询
常规查询:
查询某条特定的数据:(1表示对应的_id是1)
GET /index_demo/_doc/1
查询索引中的全部数据
GET /index_demo/_doc/_search
元数据
_index:文档数据所属那个索引,理解为数据库的某张表即可。
_type:文档数据属于哪个类型,新版本使用_doc。
_id:文档数据的唯一标识,类似数据库中某张表的主键。可以自动生成或者手动指定。
_score:查询相关度,是否契合用户匹配,分数越高用户的搜索体验越高。
_version:版本号。
_source:文档数据,json格式。
定制结果集:查询想要的参数
GET /index_demo/_doc/1?_source=id,name
GET /index_demo/_doc/_search ?_source=id,name
判断文档是否存在:
HEAD /index_demo/_doc/1
使用此种方式的好处是:规范;方便,快捷(只需要code码就可)
7.文档乐观锁控制if_seq_no与if_primary_term
乐观锁(version字段实现,删除或者被修改后它的version是累加的):
当一个共用数据,同时被几个用户或者线程并发的进行操作,
它会和它的版本号进行对比。版本号匹配更新,否则不更新
老版更新方式:
post:192.168.56.102:9200/my_doc/_doc/2001?version=2
{
“doc”: {
“name”: “慕课111”
}
}
查询对应的数值:
使用if_seq_no与if_primary_term进行更新的时候,同时会将下次的
if_seq_no(累加)与if_primary_term(不变)数值返回出来
当下版本的乐观锁控制需要使用if_seq_no与if_primary_term,使用在请求体中
字段中的“_seq_no”与“_primary_term”代表的是新的版本号
版本元数据
_seq_no:文档版本号,作用同_version(相当于学生编号,每个班级的班主任为学生分配编号,效率要比学校教务处分配来的更加高效,管理起来更方便)
_primary_term:文档所在位置(相当于班级)
8.分词与内置分词器
分词中文不识别。
全局分析:展现的是对于text文本内容的分词
POST /_analyze
{
“analyzer”: “standard”,
“text”: “text文本”
}
使用现有索引库:
POST /my_doc/_analyze
{
“analyzer”: “standard”,
“field”: “name”,
“text”: “text文本”
}
上面两种结果在简单的测试中,看起来没有多大区别;
es内置分词器
standard:默认分词,单词会被拆分,大小会转换为小写。
simple:按照非字母分词。大写转为小写。
whitespace:按照空格分词。忽略大小写。
stop:去除无意义单词,比如the/a/an/is…
keyword:不做分词。把整个文本作为一个单独的关键词。
非字母分词表示:不是字母会将其去除。
{
“analyzer”: “standard”,
“text”: “My name is Peter Parker,I am a Super Hero. I don’t like the Criminals.”
}
9建立IK中文分词器
安装IK分词器:(问题:遇到了-bash: unzip: 未找到命令的问题,重新定义安装就可)
Yum -y install unzip zip:安装unzip
unzip elasticsearch-analysis-ik-7.4.2.zip -d /usr/local/elasticsearch-7.4.2/plugins/ik
POST /_analyze
{
“analyzer”: “ik_max_word”,
“text”: “上下班车流量很大”
}
10.自定义中文词库
建立自定义词汇
在es/plugins/ik/config
vim custom.dic
添加内容:
新华网
骚年
配置自定义词典:
custom.dic
重启测试:
相关文章:

分布式搜索引擎ES-Elasticsearch进阶
1.head与postman基于索引的操作 引入概念: 集群健康: green 所有的主分片和副本分片都正常运行。你的集群是100%可用 yellow 所有的主分片都正常运行,但不是所有的副本分片都正常运行。 red 有主分片没能正常运行。 查询es集群健康状态&…...
低代码与传统编程:快速高质量构建系统的比较与方法
在信息技术飞速发展的今天,企业对软件系统的需求不断增加。然而,如何在保证高质量的前提下快速构建系统成为了一个关键问题。本文将深入探讨低代码(Low-Code)开发与传统代码编程的区别,并探讨如何利用这两种方法快速高…...

WebRTC音视频-环境搭建
目录 期望效果 1:虚拟机和系统安装 2:WebRTC客户端环境搭建 2.1:VScode安装 2.2:MobaXterm安装 3:WebRTC服务器环境搭建 3.1:安装openssh服务器 3.2:安装Node.js 3.3:coturn穿透和转发服务器 3.3.1&a…...
Memcached开发(八):使用PHP进行操作
目录 1. 安装与配置 1.1 安装Memcached服务器 1.2 安装PHP的Memcached扩展 2. 基本操作 2.1 连接Memcached服务器 2.2 设置与获取数据 2.3 删除数据 2.4 检查数据是否存在 2.5 添加和替换数据 3. 高级操作 3.1 批量操作 3.2 数据计数器 3.3 CAS(Check …...

[Spring Boot]Protobuf解析MQTT消息体
简述 本文主要针对在MQTT场景下,使用Protobuf协议解析MQTT的消息体 Protobuf下载 官方下载 https://github.com/protocolbuffers/protobuf/releases网盘下载 链接:https://pan.baidu.com/s/1Uz7CZuOSwa8VCDl-6r2xzw?pwdanan 提取码:an…...
什么是Mappers?Mappers的作用是什么?
在软件开发中,“mappers” 通常指的是数据映射器(Data Mappers),它们的主要作用是在应用程序的数据持久化层(通常是数据库或其他持久化存储)与应用程序的业务逻辑之间建立一个映射层。 具体来说࿰…...

python-多任务编程
2. 多任务编程 2.1 多任务概述 多任务 即操作系统中可以同时运行多个任务。比如我们可以同时挂着qq,听音乐,同时上网浏览网页。这是我们看得到的任务,在系统中还有很多系统任务在执行,现在的操作系统基本都是多任务操作系统,具备…...

IDEA创建Java工程、Maven安装与建立工程、Web工程、Tomcat配置
《IDEA破解、配置、使用技巧与实战教程》系列文章目录 第一章 IDEA破解与HelloWorld的实战编写 第二章 IDEA的详细设置 第三章 IDEA的工程与模块管理 第四章 IDEA的常见代码模板的使用 第五章 IDEA中常用的快捷键 第六章 IDEA的断点调试(Debug) 第七章 …...
使用工作流产生高质量翻译内容的实战教程
大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…...

笔记:Few-Shot Learning小样本分类问题 + 孪生网络 + 预训练与微调
内容摘自王老师的B站视频,大家还是尽量去看视频,老师讲的特别好,不到一小时的时间就缕清了小样本学习的基础知识点~Few-Shot Learning (1/3): 基本概念_哔哩哔哩_bilibili Few-Shot Learning(小样本分类) 假设现在每类…...
初学Mybatis之 CRUD 增删改查
namespace 中的包名要和 Dao/Mapper 接口的包名一致 select:选择,查询语句 同理,还有 insert、update、delete 标签 id:对应的 namespace 中的方法名 resultType:sql 语句执行的返回值 parameterType:…...
Kali Linux APT 设置指南:如何控制软件包更新行为
在我浏览 CSDN 的问答社区时,我发现一篇求助内容是一位用户对于如何在使用 APT 更新时避免更新 Arduino 这个问题感到困惑。这激发了我写这篇博客的灵感。我希望通过这篇文章,帮助那些在 Kali Linux 上使用 APT 管理软件包更新的朋友们,特别是…...
Android 10.0 Settings 加载流程
一、系统设置首页 代码路径:packages/app/Settings/ 1 主界面加载: <!-- Alias for launcher activity only, as this belongs to each profile. --><activity-alias android:name"Settings"android:label"string/settings_la…...

mysql的索引、事务和存储引擎
目录 索引 索引的概念 索引的作用 作用 索引的副作用 创建索引 创建索引的原则和依据 索引的类型 创建索引 查看索引 删除索引 drop 主键索引 普通索引 添加普通索引 唯一索引 添加唯一索引 组合索引 添加组合索引 查询组合索引 全文索引 添加全文索引 …...
基于trace_id实现SpringCloudGateway网关的链路追踪
之前写的两篇关于基于 trace_id 的链路追踪的文章: 基于trace_id的链路追踪(含Feign、Hystrix、线程池等场景)基于trace_id的链路追踪(ForkJoinPool场景) 一、引言 在之前的文章中,我们讨论了基于 trace…...
Windows 11 version 22H2 中文版、英文版 (x64、ARM64) 下载 (updated Jul 2024)
Windows 11 version 22H2 中文版、英文版 (x64、ARM64) 下载 (updated Jul 2024) Windows 11, version 22H2,企业版 arm64 x64 请访问原文链接:https://sysin.org/blog/windows-11/,查看最新版。原创作品,转载请保留出处。 作者…...

【C语言】动态内存管理(上)
文章目录 前言1.为什么要存在动态内存2. malloc和free2.1 malloc2.2 free2.3 使用实例(malloc和free) 3. calloc3.1 calloc例子 前言 本文开始将开始学习C语言中一个比较重要的知识点或者是操作——动态内存管理。由于本次的知识比较重要,为…...

【BUG】已解决:ModuleNotFoundError: No module named‘ pip‘
已解决:ModuleNotFoundError: No module named‘ pip‘ 目录 已解决:ModuleNotFoundError: No module named‘ pip‘ 【常见模块错误】 【解决方案】 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页,我是博主英杰…...
网络安全-网络安全及其防护措施11
51.网络容量规划 网络容量规划的概念和重要性 网络容量规划: 是指根据业务需求和预期增长,合理规划和设计网络的带宽、设备和资源,以满足未来网络流量和服务质量的需求。通过有效的网络容量规划,确保网络性能稳定和用户体验良好…...

使用IDEA编写lua脚本并运行
下载lua https://github.com/rjpcomputing/luaforwindows/releases 是否创建桌面快捷方式:我们的目标是使用IDEA编写lua脚本,所以不需要勾选。后面需要的话,可以到安装目录下手动创建快捷方式 环境变量自动配置 安装后会自动配置好环境变量…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...

label-studio的使用教程(导入本地路径)
文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...

Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

MMaDA: Multimodal Large Diffusion Language Models
CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构…...

什么是库存周转?如何用进销存系统提高库存周转率?
你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...

(二)原型模式
原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

ios苹果系统,js 滑动屏幕、锚定无效
现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词
Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)
Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败,具体原因是客户端发送了密码认证请求,但Redis服务器未设置密码 1.为Redis设置密码(匹配客户端配置) 步骤: 1).修…...