谷粒商城实战笔记-126-全文检索-ElasticSearch-整合-测试保存
文章目录
- 一,谷粒商城实战笔记-126-全文检索-ElasticSearch-整合-测试保存
- 1,在Elasticsearch的配置类中增加通用设置
- 2,索引数据
- 3,验证
一,谷粒商城实战笔记-126-全文检索-ElasticSearch-整合-测试保存
1,在Elasticsearch的配置类中增加通用设置

public static final RequestOptions COMMON_OPTIONS;static {RequestOptions.Builder builder = RequestOptions.DEFAULT.toBuilder();// builder.addHeader("Authorization", "Bearer " + TOKEN);// builder.setHttpAsyncResponseConsumerFactory(// new HttpAsyncResponseConsumerFactory// .HeapBufferedResponseConsumerFactory(30 * 1024 * 1024 * 1024));COMMON_OPTIONS = builder.build();}
这段代码的主要作用是:
- 配置客户端请求时携带的认证信息(如认证令牌)。
- 定义了客户端处理大文件响应的方式,通过设置一个较大的缓冲区大小。
这些配置选项将在后续使用Elasticsearch客户端执行请求时被应用,比如在后面代码片段中 restHighLevelClient.index(request, COMMON_OPTIONS),其中 COMMON_OPTIONS 被用作请求选项传递给客户端。这样,每次发送请求时都会自动包含这些设置,无需每次都手动配置。
2,索引数据
public void indexData() throws IOException {IndexRequest request = new IndexRequest("users");request.id("1"); //数据的idUser user = new User();user.setName("zhangsan");user.setAge(18);user.setGender("男");String jsonString = JSON.toJSONString(user);request.source(jsonString, XContentType.JSON);IndexResponse index = restHighLevelClient.index(request, GulimallElasticSearchConfig.COMMON_OPTIONS);System.out.println(index);}class User {String name;int age;String gender;String json() {return JSON.toJSONString(this);}}
这段Java代码使用了Elasticsearch的REST High-Level Client来索引(存储)一条文档到Elasticsearch中。
-
IndexRequest request = new IndexRequest("users");- 创建一个
IndexRequest对象,该对象指定要将数据索引到名为"users"的索引中。
- 创建一个
-
request.id("1");- 设置索引请求中的文档ID为
"1"。在Elasticsearch中,每个文档都有一个唯一标识符(ID),用于标识和检索文档。
- 设置索引请求中的文档ID为
-
String jsonString = JSON.toJSONString(user);- 使用JSON库(例如Jackson或fastjson)将
User对象转换为JSON格式的字符串。这里假设使用的是fastjson库。
- 使用JSON库(例如Jackson或fastjson)将
4 request.source(jsonString, XContentType.JSON);
- 将JSON字符串设置为
IndexRequest的源数据,并指明内容类型为JSON。
IndexResponse index = restHighLevelClient.index(request, GulimallElasticSearchConfig.COMMON_OPTIONS);- 使用REST High-Level Client执行索引操作。
restHighLevelClient是Elasticsearch客户端实例,通过它发送索引请求。GulimallElasticSearchConfig.COMMON_OPTIONS是一个配置选项,通常用于设置请求的超时和其他参数。
- 使用REST High-Level Client执行索引操作。
这段代码执行完成后,会在Elasticsearch的users索引中创建一个ID为1的文档,包含用户的名字、年龄和性别信息。
3,验证
保存完成后,Kibana中可以查询到这条文档。
GET users/_search

也可以使用Java Api进行验证。
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.action.get.GetRequest;
import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.ElasticsearchException;// 假设 restHighLevelClient 已经初始化好了
RestHighLevelClient client = restHighLevelClient;// 创建一个GetRequest
GetRequest getRequest = new GetRequest("users", "1");// 执行GET请求
try {GetResponse getResponse = client.get(getRequest, RequestOptions.DEFAULT);// 检查文档是否存在if (getResponse.isExists()) {// 获取文档的源数据String jsonString = getResponse.getSourceAsString();System.out.println("Document source: " + jsonString);// 如果你想解析JSON并获取特定字段,可以使用JSON库User user = JSON.parseObject(jsonString, User.class);System.out.println("Name: " + user.getName());System.out.println("Age: " + user.getAge());System.out.println("Gender: " + user.getGender());} else {System.out.println("Document not found.");}
} catch (ElasticsearchException e) {System.err.println("Error getting document: " + e.getMessage());
} catch (IOException e) {System.err.println("IO error getting document: " + e.getMessage());
}
要验证文档是否已成功保存到Elasticsearch中,你可以使用Elasticsearch客户端执行GET请求来检索该文档。以下是一个简单的示例,说明如何使用REST High-Level Client检索刚刚索引的文档。
首先,你需要确保你有客户端实例 restHighLevelClient 可用,并且已经定义了 COMMON_OPTIONS。然后,你可以使用以下代码来获取文档:
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.action.get.GetRequest;
import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.ElasticsearchException;// 假设 restHighLevelClient 已经初始化好了
RestHighLevelClient client = restHighLevelClient;// 创建一个GetRequest
GetRequest getRequest = new GetRequest("users", "1");// 执行GET请求
try {GetResponse getResponse = client.get(getRequest, RequestOptions.DEFAULT);// 检查文档是否存在if (getResponse.isExists()) {// 获取文档的源数据String jsonString = getResponse.getSourceAsString();System.out.println("Document source: " + jsonString);// 如果你想解析JSON并获取特定字段,可以使用JSON库User user = JSON.parseObject(jsonString, User.class);System.out.println("Name: " + user.getName());System.out.println("Age: " + user.getAge());System.out.println("Gender: " + user.getGender());} else {System.out.println("Document not found.");}
} catch (ElasticsearchException e) {System.err.println("Error getting document: " + e.getMessage());
} catch (IOException e) {System.err.println("IO error getting document: " + e.getMessage());
}
-
创建GetRequest:
- 使用
new GetRequest("users", "1")创建一个GetRequest对象,其中"users"是索引名称,"1"是文档的ID。
- 使用
-
执行GET请求:
- 使用
client.get(getRequest, RequestOptions.DEFAULT)发送GET请求。在这里我们使用了默认的RequestOptions,如果你之前定义了自定义的RequestOptions,你可以将RequestOptions.DEFAULT替换为COMMON_OPTIONS。
- 使用
-
处理响应:
getResponse.isExists()检查文档是否存在。getResponse.getSourceAsString()获取文档的源数据作为字符串。- 使用JSON库(例如Jackson或fastjson)将字符串反序列化为
User对象,以便于进一步处理。
相关文章:
谷粒商城实战笔记-126-全文检索-ElasticSearch-整合-测试保存
文章目录 一,谷粒商城实战笔记-126-全文检索-ElasticSearch-整合-测试保存1,在Elasticsearch的配置类中增加通用设置2,索引数据3,验证 一,谷粒商城实战笔记-126-全文检索-ElasticSearch-整合-测试保存 1,在…...
flutter开发环境搭建与android studio 安装配置
flutter开发环境搭建与android studio 安装配置 安装 android studio 下载安装 Android Studio 开发工具 Android Studio官网安装的时看到配置路径就换成自己其他盘的路径即可,其他的一路下一步就ok安装完毕,运行打开缺少 android sdk 按照提示下载即可…...
postgresql 字符串 替换
postgresql 字符串 替换 在PostgreSQL中,可以使用replace()函数来替换字符串中的某个部分。该函数的语法如下: REPLACE(string text, from text, to text) 其中: string 是要进行替换操作的原始字符串。 from 是原始字符串中需要被替换掉的…...
如何强化学习神经网络
强化学习(Reinforcement Learning, RL)神经网络是一种通过奖励和惩罚机制来学习策略的方法,适用于各种复杂的决策问题。以下是强化学习神经网络的一些主要步骤和方法: 1. 了解基本概念 环境(Environment)…...
Hadoop未授权访问漏洞
Hadoop未授权访问漏洞 Hadoop是一个由Apache基金会所开发的分布式系统基础架构,由于服务器直接在开放了Hadoop机器HDFS的50070web端口及部分默认服务端口,黑客可以通过命令行操作多个目录下的数据,如进行删除,下载,目…...
Python中json模块的编码和解码
在Python中,可以用json模块处理JSON的编码和解码问题。json的全程是 javascript object notation, 翻译一下就是javascritpt 对象表示法。json是一种轻量级的数据交换格式,容易阅读和编写,支持的数据类型有:字符串、数字、数组和对…...
【Linux】文件变身大作战:Linux下的文件重命名艺术
欢迎来到 CILMY23 的博客 🏆本篇主题为:文件变身大作战:Linux下的文件重命名艺术 🏆个人主页:CILMY23-CSDN博客 🏆系列专栏:Python | C | C语言 | 数据结构与算法 | 贪心算法 | Linux | 算法…...
字节的存储和字符的存储
字节的存储 内存中的存储 基本数据类型: 在Java中,byte 类型占用 1 个字节(8 位)。它的取值范围是从 -128 到 127。存储在内存中的 byte 数据可以直接操作,例如通过数组或变量访问。 数据结构: byte 数组…...
Markdown插入Base64格式的图片,无需图床,稳定保存
Markdown插入Base64格式的图片,无需图床,稳定保存 我是一个Markdown的爱好者,转存图片是MD经常出问题的地方,因为MD不像其他富文本编辑器,将图片内嵌到文件中,而是用链接的形式引用,或网络链接…...
weblogic 连接gaussdb测试数据源是否联通
文章目录 1. gaussdb创建远程连接用户和数据库2. weblogic构建GaussDB源数据库3. 测试结果查询注意 weblogic中jar包已经放入lib目录中gaussdb已经创建可以连接登录的用户和数据库1. gaussdb创建远程连接用户和数据库 新建用户和数据库连接客户端Gauss=# create user lily pas…...
如何成为全域运营商?掌握这2种申请方式就够了!
随着全域概念的兴起,全域运营商的职业前景和收益空间逐渐显现,并迅速成为了热门创业赛道中的一份子,连带着如何成为全域运营商等入局方式相关话题也成为了众多创业者热议的焦点。 不过,从市场现状来看,作为涵盖公域和私…...
@ConfigurationProperties加在方法上
ConfigurationProperties注解通常用于将外部配置文件(如application.properties或application.yml)中的属性映射到Java类中。它通常加在类上,但也可以加在方法上。加在方法上时,通常与Bean注解一起使用,以便将配置属性…...
使用CUBEMX配置的USB大容量存储设备主机库获取LUN数量的不严谨代码纠正
最近在使用usb主机库驱动U盘直接进行扇区读写。 发现MSC库中获取LUN相关代码有问题 代码如下 其中 status USBH_MSC_BOT_REQ_GetMaxLUN(phost, (uint8_t *)(void *)&MSC_Handle->max_lun); MSC_Handle->max_lun (MSC_Handle->max_lun > MAX_SUPPORTED_L…...
合并重叠的区间
这一题不能用差分数组,因为 [1 , 4] [5, 6] 这个就会被合并,正确的做法就是先排序 bool cmp(vector<int> a, vector<int> b) {if (a[0] < b[0]) return 1;if (a[0] b[0]) return a[1] < b[1];return 0; } class Solution { public:ve…...
docker和运维
创建服务 docker service create --name order --network my-net -p 8080:8080 -d xxx 加入swarm集群 docker swarm join --token xxx 更新结点名字为mysql docker node update --label-add servermysql ecs-82ec-0003 创建MySQL服务 docker service create --name mysql --con…...
苍穹外面day13(day10)---订单状态定时处理、来单提醒和客户催单
Spring Task 同学们可以看我这篇文章 Spring Task初学-CSDN博客 订单状态定时处理 新建OrderTask /*** 定时任务类,定时处理订单状态*/ Component Slf4j public class OrderTask {Autowiredprivate OrderMapper orderMapper;/*** 处理超时订单的方法*/Scheduled(c…...
RCE和php文件上传
一、远程命令执行(RCE) RCE漏洞概述 RCE漏洞允许攻击者通过某种方式在目标服务器上执行任意命令。这种漏洞通常出现在服务器端语言中,如PHP。 RCE漏洞原理 PHP中的一些函数可以执行命令或代码,但如果对这些函数的输入未加限制&a…...
nextjs 实现TodoList网页应用案例
参考: https://nextjs.org/ Next.js 是用于网络的一种 React 框架。一些世界上最大的公司在使用它,它能够借助 React 组件的力量让您创建高质量的网络应用程序。 1、创建项目: 另外注意:pages与app路由存在冲突,如果有…...
U盘格式化了怎么恢复数据?教你U盘恢复妙招
U盘作为便携式存储设备,在我们的日常生活和工作中发挥着重要作用。然而,有时由于操作失误或其他原因,我们可能会格式化U盘,从而导致数据丢失。当遭遇这种情况时,很多人会感到焦虑和困惑。不过,幸运的是&…...
化工厂室内外4G/5G+蓝牙+GPS/北斗RTK人员定位系统解决方案
化工厂是高风险场所,含有大量有毒、易燃、易爆、易腐蚀等化学物品,并且环境复杂、设备繁多,一旦出现人为疏忽或者违规操作很容易引发重大安全事故,因此对化工厂员工、外来访客进行科学合理地管控,提升化工厂管理人员管…...
VLA学习笔记——持续更新中
5 VLA - Vision-Language-Action 大模型 Vision-Language-Action(视觉 - 语言 - 动作) 大模型是之后 多模态 AI 以及机器人发展的一个非常重要的方向,有了 VLA 这位大神的加持,机器人可以完成由环境感知到动作应对的智能任务。 欢迎大家star! Paper: O…...
GHelper:重构华硕笔记本硬件控制的颠覆式开源方案
GHelper:重构华硕笔记本硬件控制的颠覆式开源方案 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Strix, Scar, …...
长尾关键词SEO优化费用如何计算_企业自营SEO关键词优化成本是多少
长尾关键词SEO优化费用如何计算_企业自营SEO关键词优化成本是多少 在当今数字化时代,SEO(搜索引擎优化)已经成为企业提升网站流量、增加品牌曝光度的重要手段。其中,长尾关键词SEO优化因其较低的竞争度和高转化率,备受…...
人工智能之数字生命 认知架构白皮书 第4章
《HY-Ego 认知架构白皮书》(续)4. 世界树(World Tree)——全局世界骨架 世界树是 HY-Ego 认知架构的全局事实骨架,负责对整个“世界”进行结构化建模、组织和维护。它与因果树并行独立运行,二者通过快照机制…...
IronCalc 性能基准测试:与传统电子表格引擎的对比分析
IronCalc 性能基准测试:与传统电子表格引擎的对比分析 【免费下载链接】IronCalc Main engine of the IronCalc ecosystem 项目地址: https://gitcode.com/gh_mirrors/ir/IronCalc IronCalc 是一个基于 Rust 语言开发的现代化开源电子表格引擎,专…...
微信聊天记录备份工具:守护数字记忆的安全防线
微信聊天记录备份工具:守护数字记忆的安全防线 【免费下载链接】WeChatExporter 一个可以快速导出、查看你的微信聊天记录的工具 项目地址: https://gitcode.com/gh_mirrors/wec/WeChatExporter 在数字化时代,微信聊天记录已成为我们生活与工作的…...
OpenClaw二次开发:基于Qwen3.5-9B定制个性化技能模块
OpenClaw二次开发:基于Qwen3.5-9B定制个性化技能模块 1. 为什么需要自定义技能模块 去年冬天,我发现自己每天早晨都要手动查询天气来决定穿什么衣服。作为一个技术爱好者,我开始思考:能否让OpenClaw自动完成这个任务?…...
OpenClaw技能开发模板:5分钟为Kimi-VL-A3B-Thinking创建自定义多模态处理器
OpenClaw技能开发模板:5分钟为Kimi-VL-A3B-Thinking创建自定义多模态处理器 1. 为什么需要自定义技能 上周我在处理一批产品截图和用户反馈时,突然意识到一个痛点:虽然Kimi-VL-A3B-Thinking多模态模型能理解图片内容,但每次都要…...
RailSAM:驯 服 SAM与 适 配 器 的 铁 路 分 割精读
一、整体总结研究领域: 基于视觉基础模型的铁路场景语义分割(轨道分割)解决问题: 解决传统铁路分割方法依赖大量标注数据、泛化能力差、计算开销大的问题,同时探索如何将通用大模型(SAM)有效迁移…...
RC滤波器设计实战:从基础到高阶应用
1. RC滤波器设计基础与核心概念在嵌入式系统设计中,信号滤波是每个硬件工程师必须掌握的核心技能。我从业十余年处理过无数传感器信号,发现90%的噪声问题都可以通过合理设计的RC滤波器解决。与动辄使用运放或DSP方案相比,无源RC滤波器以极低成…...
