(十)ElasticSearch高级使用【别名,重建索引,refresh操作,高亮查询,查询建议】
1.别名使用
1)别名作用
在开发中,随着业务需求的迭代,较⽼的业务逻辑就要⾯临更新甚⾄是重构,⽽对于es来说,为了
适应新的业务逻辑,可能就要对原有的索引做⼀些修改,⽐如对某些字段做调整,甚⾄是重建索
引。⽽做这些操作的时候,可能会对业务造成影响,甚⾄是停机调整等问题。由此,es提供了索引
别名来解决这些问题。 索引别名就像⼀个快捷⽅式或是软连接,可以指向⼀个或多个索引,也可
以给任意⼀个需要索引名的API来使⽤。别名的应⽤为程序提供了极⼤地灵活性
2)别名使用
查询
GET /_alias
创建别名
POST /_aliases
{"actions": [{"add": {"index": "my_data_index","alias": "current_data"}}]
}
删除别名
POST /_aliases
{"actions": [{"remove": {"index": "my_data_index","alias": "current_data"}}]
}
2.重建索引
在 Elasticsearch 中,重建索引是一项重要的操作,通常用于更新或优化现有索引。以下是有关如何执行重建索引的一些建议和步骤:
1)备份数据
在执行重建索引之前,确保你有原始索引的备份。这是因为重建索引会创建一个新的索引,然后将数据从旧索引复制到新索引。如果出现问题,你可以回滚到原始索引。
2)创建新索引
首先,你需要创建一个新的索引,用于存储重新索引后的数据。你可以使用 Elasticsearch 的索引模板和设置来定义新索引的配置,确保它符合你的需求。
PUT /new_index
{"settings": {"number_of_shards": 5,"number_of_replicas": 1},"mappings": {"_doc": {"properties": {"field1": { "type": "text" },"field2": { "type": "keyword" }}}}
}
3)执行重建
使用 Elasticsearch 的 Reindex API:这是一种安全的方法,它允许你从旧索引到新索引复制数据,并提供了一些高级选项来处理数据转换和过滤等任务。
POST /_reindex
{"source": {"index": "old_index"},"dest": {"index": "new_index"}
}
使用 Logstash 或其他 ETL 工具:如果你有复杂的数据转换需求,可以考虑使用 Logstash 或其他 ETL(Extract, Transform, Load)工具来从旧索引导出数据并将其导入新索引
4)测试和验证
在执行重建操作后,务必进行测试和验证以确保新索引中的数据与旧索引中的数据一致。你可以执行一些查询和聚合操作,以验证数据的准确性。
5)更新别名
一旦你验证了新索引中的数据,可以更新别名,将其指向新索引,以便应用程序可以开始使用新索引中的数据。
POST /_aliases
{"actions": [{"remove": {"index": "old_index","alias": "my_alias"}},{"add": {"index": "new_index","alias": "my_alias"}}]
}
6)清理旧索引
一旦你确认新索引正常工作,可以考虑删除或归档旧索引,以释放磁盘空间并减轻集群负载。
3.refresh操作
在 Elasticsearch 中,refresh 操作用于使新索引数据在搜索前立即可见。默认情况下,Elasticsearch 具有自动刷新机制,索引每秒自动刷新一次,以使新的文档和更改对搜索可见。
修改默认更新时间(默认时间是1s,-1为关闭)
PUT /star/_settings
{"index": {"refresh_interval": "5s"}
}
有时你可能需要手动执行 refresh 操作以确保最新的数据立即可用。
POST /my_index/_refresh
4.es高亮查询
在执行搜索查询时,你可以使用 highlight 参数来请求高亮信息。以下是一个简单的示例:
1)高亮查询
GET /my_index/_search
{"query": {"match": {"content": "关键词"}},"highlight": {"fields": {"content": {} // 高亮的字段}}
}
在上面的示例中,我们执行了一个简单的全文搜索查询,目标是 content 字段中包含关键词 “关键词” 的文档。高亮信息将包含在响应中。
2)解析高亮结果
在查询结果中,你将看到一个名为 highlight 的部分,它包含了高亮信息。你可以从中提取高亮的文本以及它们的位置。
"hits": {"total": 3,"hits": [{"_source": {"content": "这是包含关键词的文本。"},"highlight": {"content": ["这是包含 <em>关键词</em> 的文本。"]}}]
}
3)自定义高亮样式
默认情况下,高亮文本使用 标签标记,但你可以根据需要自定义高亮的样式。你可以在查询中使用 pre_tags 和 post_tags 参数定义前缀和后缀标签。
"highlight": {"fields": {"content": {}},"pre_tags": ["<span class='highlight'>"],"post_tags": ["</span>"]
}
4.es查询建议
Elasticsearch 提供了几种不同类型的查询建议器,包括 Term Suggester(词语建议器)、Phrase Suggester(短语建议器)和 Completion Suggester(自动完成建议器)。让我分别解释它们的作用和用法:
1)Term Suggester(词语建议器)
作用:Term Suggester 用于纠正拼写错误,提供与用户输入的单个词语最接近的建议。
用法:你可以在查询请求中使用 Term Suggester 来提供词语级别的建议。它通常用于搜索引擎的搜索框,以帮助用户纠正拼写错误并提供相关的建议。
示例:
POST /my_index/_search
{"suggest": {"my-suggestion": {"text": "applle","term": {"field": "product_name"}}}
}
2)Phrase Suggester(短语建议器)
作用:Phrase Suggester 用于提供纠正的短语或建议,而不仅仅是单个词。
用法:你可以在查询请求中使用 Phrase Suggester 来提供短语级别的建议。它通常用于搜索引擎的搜索框,以帮助用户在纠正拼写错误的同时提供整个查询短语的建议。
示例:
POST /my_index/_search
{"suggest": {"my-suggestion": {"text": "red bbaloon","phrase": {"field": "product_name"}}}
}
3)Completion Suggester(自动完成建议器)
作用:Completion Suggester 用于实现自动完成搜索,根据用户输入的一部分提供建议。
用法:通常在搜索框中,当用户键入查询的一部分时,Completion Suggester 提供可能的建议,以帮助用户更快地完成输入。
示例:
POST /my_index/_search
{"suggest": {"my-suggestion": {"prefix": "app","completion": {"field": "product_name.suggest"}}}
}
请注意,对于 Completion Suggester,通常需要在索引映射中定义一个专门的 “completion” 字段,以便支持自动完成建议。
相关文章:
(十)ElasticSearch高级使用【别名,重建索引,refresh操作,高亮查询,查询建议】
1.别名使用 1)别名作用 在开发中,随着业务需求的迭代,较⽼的业务逻辑就要⾯临更新甚⾄是重构,⽽对于es来说,为了 适应新的业务逻辑,可能就要对原有的索引做⼀些修改,⽐如对某些字段做调整&…...
基于小波神经网络的中药材价格预测,基于ANN的小波神经网络中药材价格预测
目标 背影 BP神经网络的原理 BP神经网络的定义 BP神经网络的基本结构 BP神经网络的神经元 BP神经网络的激活函数, BP神经网络的传递函数 小波神经网络(以小波基为传递函数的BP神经网络) 代码链接:基于小波神经网络的中药材价格预测,ANN小波神经网络中药材价格预测资源-CS…...
thinkPhp5返回某些指定字段
//去除掉密码$db new UserModel();$result $db->field(password,true)->where("username{$params[username]} AND password{$params[password]}")->find(); 或者指定要的字段的数组 $db new UserModel();$result $db->field([username,create_time…...
基于docker环境的tomcat开启远程调试
背景: Tomcat部署在docker环境中,使用rancher来进行管理,需要对其进行远程调试。 操作步骤: 1.将容器中的catalina.sh映射出来,便于对其修改,添加远程调试相关参数。 注意:/data/produce2201…...
ELK日志框架图总结
ELK日志框架图总结 本文目录 ELK日志框架图总结Elastic Stack介绍模式分层图beatselasticsearchkibana模式logstashelasticsearchkibana模式beatslogstashelasticsearchkibana模式beats缓存/消息队列logstashelasticsearchkibana模式elkspringboot Elastic Stack介绍 官网&…...
go 每天定时任务 --chatGPT
问:clearLog(hour,cmds),定时执行shell 命令,hour 为每天的几点,cmds 为linux命令数组字符串(如 1,{"ls","cd"}) gpt: 要编写一个 Go 函数 clearLog,该函数可…...
Lightdb 23.3 plorasql函数支持DML
开篇立意 oracle在函数中使用dml语句时,有两者情况。即:(1)直接使用select调用该函数;(2)在匿名块中调用该函数。 针对第一种情况我们测试一下 简单的函数: create table nested_t…...
电容笔值不值得买?开学季比较好用的电容笔
眼看着新学期即将到来,到底应该选择什么样的电容笔?一款原装的苹果Pencil,就卖到了将近一千块,这对于很多人来说,都是一个十分昂贵的价格。事实上,由于平替电容笔的价格非常便宜,只要一二百元就…...
Mybatis 框架 ( 五 ) 分页
4.6.分页 Mybatis-plus 内置分页插件, 并支持多种数据库 官网 : 分页插件 | MyBatis-Plus (baomidou.com) 4.6.1.增加拦截器 通过 MapperScan 指定 mapper接口的路径 import com.baomidou.mybatisplus.annotation.DbType; import com.baomidou.mybatisplus.extension.plug…...
Python模板注入
概念 发生在使用模板引擎解析用户提供的输入时。模板注入漏洞可能导致攻击者能够执行恶意代码或访问未授权的数据。 模板引擎可以让(网站)程序实现界面与数据分离,业务代码与逻辑代码分离。即也拓宽了攻击面,注入到模板中的代码可…...
Java常用的设计模式
单例模式(Singleton Pattern): 确保一个类只有一个实例,并提供一个全局访问点。示例:应用程序中的配置管理器。 工厂模式(Factory Pattern): 用于创建对象的模式,封装对象的创建过程。示例&…...
攻防世界-WEB-Web_php_include
打开靶机 通过代码审计可以知道,存在文件包含漏洞,并且对伪协议php://进行了过滤。 发现根目录下存在phpinfo 观察phpinfo发现如下: 这两个都为on 所以我们就可以使用data://伪协议 payload如下: - ?pagedata://text/plain,…...
angular中多层嵌套结构的表单如何处理回显问题
最近在处理angular表单时,有一个4层结构的表单。而且很多元素时动态生成,如下: this.validateFormthis.fb.group({storeId: ["test12"],storeNameKey:[],config:this.fb.group({ tableSize:this.fb.group({toggle:[false],groupSiz…...
Leetcode646. 最长数对链
Every day a Leetcode 题目来源:646. 最长数对链 解法1:动态规划 定义 dp[i] 为以 pairs[i] 为结尾的最长数对链的长度。 初始化时,dp 数组需要全部赋值为 1。 计算 dp[i] 时,可以先找出所有的满足 pairs[i][0]>pairs[j]…...
Windows 下安装NPM
第一步: 下载node.js的windows版 当前最新版本是https://nodejs.org/dist/ 第二步:设置环境变量 把node.exe所在目录加入到PATH环境变量中。 配置成功后可以在CMD中通过node --version 看到node.js对应的版本号 C:\Users\fn>node --version v6.10.2 第三步: 安装git 直接…...
【ARM CoreLink 系列 2 -- CCI-400 控制器简介】
文章目录 CCI-400 介绍DVM 机制介绍DVM 消息传输过程TOKEN 机制介绍 下篇文章:ARM CoreLink 系列 3 – CCI-550 控制器介绍 CCI-400 介绍 CCI(Cache Coherent Interconnect)是ARM 中 的Cache一致性控制器。 CCI-400 将 Interconnect 和coh…...
LeetCode(力扣)77. 组合Python
LeetCode77. 组合 题目链接代码 题目链接 https://leetcode.cn/problems/combinations/description/ 代码 class Solution:def combine(self, n: int, k: int) -> List[List[int]]:result []return self.backtracking(n, k, 1, [], result)def backtracking(self, n, k…...
uniapp h5 微信缓存,解决版本更新还是旧版本
文章目录 一、微信缓存是什么?二、如何解决1.打包入口文件解决2.给请求url加时间戳3.给打包的js文件添加时间戳并修改打包后的css文件夹 总结 一、微信缓存是什么? 微信缓存是指微信客户端为了提高用户的使用体验,会在用户使用微信过程中将一…...
Nacos——Distro一致性协议
Nacos——Distro一致性协议 1. 理论 一致性一直都是分布式系统中绕不开的话题。根据CAP中,要么CP(保证强一致性牺牲可用性),要么AP(最终一致性来保证可用性),在市面上也有几种一致性算法,像Paxos,Raft,Zoo…...
大模型参数高效微调PEFT的理解和应用
简介 近年的大型语言模型(也被称作基础模型),大多是采用大量资料数据和庞大模型参数训练的结果,比如常见的ChatGPT3有175B的模型参数量。随着Large Language Model(LLM)的横空出世,网络模型对常见问题的解答有了很强的…...
开源机器人夹爪任务控制台:架构设计与工程实践全解析
1. 项目概述:从“OpenClaw 任务控制”看开源机器人控制台的演进最近在机器人开发社区里,一个名为abhi1693/openclaw-mission-control的项目引起了我的注意。乍一看这个标题,你可能会联想到科幻电影里那些布满屏幕、控制着庞大机械臂的指挥中心…...
I2C虚拟项目笔记(二)-virtual sequence实战:中断与异常场景构建
1. 为什么需要模拟中断与异常场景? 在实际的I2C总线通信中,各种异常情况时有发生。比如从设备突然掉电导致无应答(NACK),或者主设备在发送数据时遭遇干扰导致传输中断。这些场景如果不在验证阶段充分覆盖,…...
3步零编程定制你的Windows系统:Windhawk终极指南
3步零编程定制你的Windows系统:Windhawk终极指南 【免费下载链接】windhawk The customization marketplace for Windows programs: https://windhawk.net/ 项目地址: https://gitcode.com/gh_mirrors/wi/windhawk 想要个性化Windows界面却不懂编程ÿ…...
ITK-SNAP医学图像分割:精准医疗影像分析的利器
ITK-SNAP医学图像分割:精准医疗影像分析的利器 【免费下载链接】itksnap ITK-SNAP medical image segmentation tool 项目地址: https://gitcode.com/gh_mirrors/it/itksnap 面对复杂的医学影像数据,如何快速准确地进行三维解剖结构分割ÿ…...
ElevenLabs 2024定价突变预警(附迁移成本计算器):Voice Cloning商用授权条款升级对SaaS产品的3重合规冲击
更多请点击: https://intelliparadigm.com 第一章:ElevenLabs定价策略分析 核心订阅层级与功能边界 ElevenLabs 当前采用三层订阅模型(Starter、Creator、Professional),各层级在语音生成时长、并发请求、自定义声音…...
Bash脚本AI助手:智能生成命令行,提升运维自动化效率
1. 项目概述:当Bash脚本遇见AI,自动化运维的智能进化如果你是一名运维工程师、系统管理员,或者任何需要与Linux命令行打交道的开发者,那么“Bash脚本”一定是你工具箱里的常客。从批量文件处理、定时任务调度到复杂的部署流程&…...
巧用邮件合并批量生成带条形码的证件标签
1. 为什么需要批量生成带条形码的证件标签? 在日常办公中,我们经常会遇到需要批量制作证件标签的情况。比如学校图书馆要给新生办理借书证,公司要给新员工制作工牌,或者社区要给居民发放会员卡。传统的手工制作方式不仅效率低下&…...
如何用LinkSwift解锁九大网盘下载新姿势?完整攻略揭秘
如何用LinkSwift解锁九大网盘下载新姿势?完整攻略揭秘 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼…...
原神玩家信息查询完整指南:如何快速掌握账号详情
原神玩家信息查询完整指南:如何快速掌握账号详情 【免费下载链接】GenshinPlayerQuery 根据原神uid查询玩家信息(基础数据、角色&装备、深境螺旋战绩等) 项目地址: https://gitcode.com/gh_mirrors/ge/GenshinPlayerQuery 还在为无法全面了解自己的原神账…...
Windows热键冲突终极排查指南:5分钟快速定位占用进程
Windows热键冲突终极排查指南:5分钟快速定位占用进程 【免费下载链接】hotkey-detective A small program for investigating stolen key combinations under Windows 7 and later. 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detective 你是否曾经…...
