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

(十)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&#xff09;别名作用 在开发中&#xff0c;随着业务需求的迭代&#xff0c;较⽼的业务逻辑就要⾯临更新甚⾄是重构&#xff0c;⽽对于es来说&#xff0c;为了 适应新的业务逻辑&#xff0c;可能就要对原有的索引做⼀些修改&#xff0c;⽐如对某些字段做调整&…...

基于小波神经网络的中药材价格预测,基于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开启远程调试

背景&#xff1a; Tomcat部署在docker环境中&#xff0c;使用rancher来进行管理&#xff0c;需要对其进行远程调试。 操作步骤&#xff1a; 1.将容器中的catalina.sh映射出来&#xff0c;便于对其修改&#xff0c;添加远程调试相关参数。 注意&#xff1a;/data/produce2201…...

ELK日志框架图总结

ELK日志框架图总结 本文目录 ELK日志框架图总结Elastic Stack介绍模式分层图beatselasticsearchkibana模式logstashelasticsearchkibana模式beatslogstashelasticsearchkibana模式beats缓存/消息队列logstashelasticsearchkibana模式elkspringboot Elastic Stack介绍 官网&…...

go 每天定时任务 --chatGPT

问&#xff1a;clearLog(hour&#xff0c;cmds),定时执行shell 命令&#xff0c;hour 为每天的几点&#xff0c;cmds 为linux命令数组字符串&#xff08;如 1&#xff0c;{"ls","cd"}&#xff09; gpt: 要编写一个 Go 函数 clearLog&#xff0c;该函数可…...

Lightdb 23.3 plorasql函数支持DML

开篇立意 oracle在函数中使用dml语句时&#xff0c;有两者情况。即&#xff1a;&#xff08;1&#xff09;直接使用select调用该函数&#xff1b;&#xff08;2&#xff09;在匿名块中调用该函数。 针对第一种情况我们测试一下 简单的函数&#xff1a; create table nested_t…...

电容笔值不值得买?开学季比较好用的电容笔

眼看着新学期即将到来&#xff0c;到底应该选择什么样的电容笔&#xff1f;一款原装的苹果Pencil&#xff0c;就卖到了将近一千块&#xff0c;这对于很多人来说&#xff0c;都是一个十分昂贵的价格。事实上&#xff0c;由于平替电容笔的价格非常便宜&#xff0c;只要一二百元就…...

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模板注入

概念 发生在使用模板引擎解析用户提供的输入时。模板注入漏洞可能导致攻击者能够执行恶意代码或访问未授权的数据。 模板引擎可以让&#xff08;网站&#xff09;程序实现界面与数据分离&#xff0c;业务代码与逻辑代码分离。即也拓宽了攻击面&#xff0c;注入到模板中的代码可…...

Java常用的设计模式

单例模式&#xff08;Singleton Pattern&#xff09;: 确保一个类只有一个实例&#xff0c;并提供一个全局访问点。示例&#xff1a;应用程序中的配置管理器。 工厂模式&#xff08;Factory Pattern&#xff09;: 用于创建对象的模式&#xff0c;封装对象的创建过程。示例&…...

攻防世界-WEB-Web_php_include

打开靶机 通过代码审计可以知道&#xff0c;存在文件包含漏洞&#xff0c;并且对伪协议php://进行了过滤。 发现根目录下存在phpinfo 观察phpinfo发现如下&#xff1a; 这两个都为on 所以我们就可以使用data://伪协议 payload如下&#xff1a; - ?pagedata://text/plain,…...

angular中多层嵌套结构的表单如何处理回显问题

最近在处理angular表单时&#xff0c;有一个4层结构的表单。而且很多元素时动态生成&#xff0c;如下&#xff1a; this.validateFormthis.fb.group({storeId: ["test12"],storeNameKey:[],config:this.fb.group({ tableSize:this.fb.group({toggle:[false],groupSiz…...

Leetcode646. 最长数对链

Every day a Leetcode 题目来源&#xff1a;646. 最长数对链 解法1&#xff1a;动态规划 定义 dp[i] 为以 pairs[i] 为结尾的最长数对链的长度。 初始化时&#xff0c;dp 数组需要全部赋值为 1。 计算 dp[i] 时&#xff0c;可以先找出所有的满足 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 机制介绍 下篇文章&#xff1a;ARM CoreLink 系列 3 – CCI-550 控制器介绍 CCI-400 介绍 CCI&#xff08;Cache Coherent Interconnect&#xff09;是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 微信缓存,解决版本更新还是旧版本

文章目录 一、微信缓存是什么&#xff1f;二、如何解决1.打包入口文件解决2.给请求url加时间戳3.给打包的js文件添加时间戳并修改打包后的css文件夹 总结 一、微信缓存是什么&#xff1f; 微信缓存是指微信客户端为了提高用户的使用体验&#xff0c;会在用户使用微信过程中将一…...

Nacos——Distro一致性协议

Nacos——Distro一致性协议 1. 理论 一致性一直都是分布式系统中绕不开的话题。根据CAP中&#xff0c;要么CP(保证强一致性牺牲可用性)&#xff0c;要么AP(最终一致性来保证可用性)&#xff0c;在市面上也有几种一致性算法&#xff0c;像Paxos&#xff0c;Raft&#xff0c;Zoo…...

大模型参数高效微调PEFT的理解和应用

简介 近年的大型语言模型&#xff08;也被称作基础模型&#xff09;&#xff0c;大多是采用大量资料数据和庞大模型参数训练的结果&#xff0c;比如常见的ChatGPT3有175B的模型参数量。随着Large Language Model(LLM)的横空出世&#xff0c;网络模型对常见问题的解答有了很强的…...

内存分配函数malloc kmalloc vmalloc

内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型

CVPR 2025 | MIMO&#xff1a;支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题&#xff1a;MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者&#xff1a;Yanyuan Chen, Dexuan Xu, Yu Hu…...

Unity3D中Gfx.WaitForPresent优化方案

前言 在Unity中&#xff0c;Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染&#xff08;即CPU被阻塞&#xff09;&#xff0c;这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案&#xff1a; 对惹&#xff0c;这里有一个游戏开发交流小组&…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业&#xff0c;其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进&#xff0c;需提前预防假检、错检、漏检&#xff0c;推动智慧生产运维系统数据的流动和现场赋能应用。同时&#xff0c;…...

12.找到字符串中所有字母异位词

&#x1f9e0; 题目解析 题目描述&#xff1a; 给定两个字符串 s 和 p&#xff0c;找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义&#xff1a; 若两个字符串包含的字符种类和出现次数完全相同&#xff0c;顺序无所谓&#xff0c;则互为…...

Spring AI与Spring Modulith核心技术解析

Spring AI核心架构解析 Spring AI&#xff08;https://spring.io/projects/spring-ai&#xff09;作为Spring生态中的AI集成框架&#xff0c;其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似&#xff0c;但特别为多语…...

ABAP设计模式之---“简单设计原则(Simple Design)”

“Simple Design”&#xff08;简单设计&#xff09;是软件开发中的一个重要理念&#xff0c;倡导以最简单的方式实现软件功能&#xff0c;以确保代码清晰易懂、易维护&#xff0c;并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计&#xff0c;遵循“让事情保…...

人机融合智能 | “人智交互”跨学科新领域

本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...

解读《网络安全法》最新修订,把握网络安全新趋势

《网络安全法》自2017年施行以来&#xff0c;在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂&#xff0c;网络攻击、数据泄露等事件频发&#xff0c;现行法律已难以完全适应新的风险挑战。 2025年3月28日&#xff0c;国家网信办会同相关部门起草了《网络安全…...

Caliper 配置文件解析:fisco-bcos.json

config.yaml 文件 config.yaml 是 Caliper 的主配置文件,通常包含以下内容: test:name: fisco-bcos-test # 测试名称description: Performance test of FISCO-BCOS # 测试描述workers:type: local # 工作进程类型number: 5 # 工作进程数量monitor:type: - docker- pro…...