当前位置: 首页 > news >正文

分布式搜索引擎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),它们的主要作用是在应用程序的数据持久化层(通常是数据库或其他持久化存储)与应用程序的业务逻辑之间建立一个映射层。 具体来说&#xff0…...

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 加载流程

一、系统设置首页 代码路径&#xff1a;packages/app/Settings/ 1 主界面加载&#xff1a; <!-- 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 的链路追踪的文章&#xff1a; 基于trace_id的链路追踪&#xff08;含Feign、Hystrix、线程池等场景&#xff09;基于trace_id的链路追踪&#xff08;ForkJoinPool场景&#xff09; 一、引言 在之前的文章中&#xff0c;我们讨论了基于 trace…...

Windows 11 version 22H2 中文版、英文版 (x64、ARM64) 下载 (updated Jul 2024)

Windows 11 version 22H2 中文版、英文版 (x64、ARM64) 下载 (updated Jul 2024) Windows 11, version 22H2&#xff0c;企业版 arm64 x64 请访问原文链接&#xff1a;https://sysin.org/blog/windows-11/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者…...

【C语言】动态内存管理(上)

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

【BUG】已解决:ModuleNotFoundError: No module named‘ pip‘

已解决&#xff1a;ModuleNotFoundError: No module named‘ pip‘ 目录 已解决&#xff1a;ModuleNotFoundError: No module named‘ pip‘ 【常见模块错误】 【解决方案】 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页&#xff0c;我是博主英杰…...

网络安全-网络安全及其防护措施11

51.网络容量规划 网络容量规划的概念和重要性 网络容量规划&#xff1a; 是指根据业务需求和预期增长&#xff0c;合理规划和设计网络的带宽、设备和资源&#xff0c;以满足未来网络流量和服务质量的需求。通过有效的网络容量规划&#xff0c;确保网络性能稳定和用户体验良好…...

使用IDEA编写lua脚本并运行

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

测试微信模版消息推送

进入“开发接口管理”--“公众平台测试账号”&#xff0c;无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息&#xff1a; 关注测试号&#xff1a;扫二维码关注测试号。 发送模版消息&#xff1a; import requests da…...

rknn优化教程(二)

文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK&#xff0c;开始写第二篇的内容了。这篇博客主要能写一下&#xff1a; 如何给一些三方库按照xmake方式进行封装&#xff0c;供调用如何按…...

在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能

下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能&#xff0c;包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

从零实现富文本编辑器#5-编辑器选区模型的状态结构表达

先前我们总结了浏览器选区模型的交互策略&#xff0c;并且实现了基本的选区操作&#xff0c;还调研了自绘选区的实现。那么相对的&#xff0c;我们还需要设计编辑器的选区表达&#xff0c;也可以称为模型选区。编辑器中应用变更时的操作范围&#xff0c;就是以模型选区为基准来…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂

蛋白质结合剂&#xff08;如抗体、抑制肽&#xff09;在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上&#xff0c;高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术&#xff0c;但这类方法普遍面临资源消耗巨大、研发周期冗长…...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练

前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1)&#xff1a;从基础到实战的深度解析-CSDN博客&#xff0c;但实际面试中&#xff0c;企业更关注候选人对复杂场景的应对能力&#xff08;如多设备并发扫描、低功耗与高发现率的平衡&#xff09;和前沿技术的…...

STM32标准库-DMA直接存储器存取

文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA&#xff08;Direct Memory Access&#xff09;直接存储器存取 DMA可以提供外设…...

三体问题详解

从物理学角度&#xff0c;三体问题之所以不稳定&#xff0c;是因为三个天体在万有引力作用下相互作用&#xff0c;形成一个非线性耦合系统。我们可以从牛顿经典力学出发&#xff0c;列出具体的运动方程&#xff0c;并说明为何这个系统本质上是混沌的&#xff0c;无法得到一般解…...

深度学习水论文:mamba+图像增强

&#x1f9c0;当前视觉领域对高效长序列建模需求激增&#xff0c;对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模&#xff0c;以及动态计算优势&#xff0c;在图像质量提升和细节恢复方面有难以替代的作用。 &#x1f9c0;因此短时间内&#xff0c;就有不…...

Ubuntu Cursor升级成v1.0

0. 当前版本低 使用当前 Cursor v0.50时 GitHub Copilot Chat 打不开&#xff0c;快捷键也不好用&#xff0c;当看到 Cursor 升级后&#xff0c;还是蛮高兴的 1. 下载 Cursor 下载地址&#xff1a;https://www.cursor.com/cn/downloads 点击下载 Linux (x64) &#xff0c;…...