山东大学软件学院项目实训-创新实训-基于大模型的旅游平台(三十二)- 微服务(12)

目录

12.8 RestClient查询文档

12.8.1 快速入门

12.8.2 match, term,bool,range查询

12.8.3 排序和分页

12.8.4 高亮


12.8 RestClient查询文档

12.8.1 快速入门
  
      @Test
      void testMatchALL() throws IOException {
          // 1. 准备request
          SearchRequest request = new SearchRequest("hotel");
          // 2. 准备DSL
          request.source()
                  .query(QueryBuilders.matchAllQuery());
          // 3. 发送请求
          SearchResponse response = client.search(request, RequestOptions.DEFAULT);
  ​
          System.out.println(response);
      }

结果解析:

  
      @Test
      void testMatchALL() throws IOException {
          // 1. 准备request
          SearchRequest request = new SearchRequest("hotel");
          // 2. 准备DSL
          request.source()
                  .query(QueryBuilders.matchAllQuery());
          // 3. 发送请求
          SearchResponse response = client.search(request, RequestOptions.DEFAULT);
  ​
          // 4. 结果解析
          SearchHits searchHits = response.getHits();
          // 4.1 获取总条数
          long total = searchHits.getTotalHits().value;
          System.out.println(total);
          // 4.2 获取文档数组
          SearchHit[] hits = searchHits.getHits();
          for (SearchHit hit : hits) {
              // 取文档source
              String json = hit.getSourceAsString();
              // 反序列化
              HotelDoc hotelDoc = JSON.parseObject(json, HotelDoc.class);
              System.out.println(hotelDoc);
          }
      }
12.8.2 match, term,bool,range查询

把结果解析的代码抽取成方法

  
      private void HandleResponse(SearchResponse response){
          // 4. 结果解析
          SearchHits searchHits = response.getHits();
          // 4.1 获取总条数
          long total = searchHits.getTotalHits().value;
          System.out.println(total);
          // 4.2 文档数组
          SearchHit[] hits = searchHits.getHits();
          for (SearchHit hit : hits) {
              // 取文档source
              String json = hit.getSourceAsString();
              // 反序列化
              HotelDoc hotelDoc = JSON.parseObject(json, HotelDoc.class);
              System.out.println(hotelDoc);
          }
      }

match查询

  
      @Test
      void testMatch() throws IOException {
          // 1. 准备request
          SearchRequest request = new SearchRequest("hotel");
          // 2. 准备DSL
          request.source()
                  .query(QueryBuilders.matchQuery("all","如家"));
          // 3. 发送请求
          SearchResponse response = client.search(request, RequestOptions.DEFAULT);
          HandleResponse(response);
  ​
      }

bool查询:

  
      @Test
      void testBool() throws IOException {
          // 1. 准备request
          SearchRequest request = new SearchRequest("hotel");
          // 2. 准备DSL
          // 2.1 准备BooleanQuery
          BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();
          // 2.2 添加term
          boolQuery.must(QueryBuilders.termQuery("city","上海"));
          // 2.3 添加range
          boolQuery.filter(QueryBuilders.rangeQuery("price").lte(250));
  ​
          request.source().query(boolQuery);
  ​
          // 3. 发送请求
          SearchResponse response = client.search(request, RequestOptions.DEFAULT);
          HandleResponse(response);
  ​
      }

12.8.3 排序和分页

  
      @Test
      void testPageAndSort() throws IOException {
          // 1. 准备request
          SearchRequest request = new SearchRequest("hotel");
          // 2. 准备DSL
          // 2.1 query
          request.source().query(QueryBuilders.matchAllQuery());
          // 2.2 排序sort
          request.source().sort("price", SortOrder.ASC);
          // 2.3 分页  from size
          request.source().from(56).size(10);    // 第56条开始展示10条
          // 3. 发送请求
          SearchResponse response = client.search(request, RequestOptions.DEFAULT);
          HandleResponse(response);
      }
12.8.4 高亮
  
      @Test
      void testHighLight() throws IOException {
          // 1. 准备request
          SearchRequest request = new SearchRequest("hotel");
          // 2. 准备DSL
          // 2.1 query
          request.source().query(QueryBuilders.matchQuery("all","如家"));
          // 2.2 高亮
          request.source().highlighter(new HighlightBuilder().field("name").requireFieldMatch(false));
  ​
          // 3. 发送请求
          SearchResponse response = client.search(request, RequestOptions.DEFAULT);
          HandleHighLightResponse(response);
      }

高亮结果解析 :

  
      private void HandleHighLightResponse(SearchResponse response){
          // 4. 结果解析
          SearchHits searchHits = response.getHits();
          // 4.1 获取总条数
          long total = searchHits.getTotalHits().value;
          System.out.println(total);
          // 4.2 文档数组
          SearchHit[] hits = searchHits.getHits();
          for (SearchHit hit : hits) {
              // 取文档source
              String json = hit.getSourceAsString();
              // 反序列化
              HotelDoc hotelDoc = JSON.parseObject(json, HotelDoc.class);
              // 获取高亮结果
              Map<String, HighlightField> highlightFields = hit.getHighlightFields();
              if(!CollectionUtils.isEmpty(highlightFields)){
                  // 根据名字获取高亮结果
                  HighlightField highlightField = highlightFields.get("name");
                  if(highlightField != null){
                      // 获取高亮值
                      String name = highlightField.getFragments()[0].string();
                      // 覆盖非高亮结果
                      hotelDoc.setName(name);
                  }
              }
  ​
              System.out.println(hotelDoc);
          }
      }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/703797.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

千锤百炼之每日算法(四)

题外话 想知道大家都喜欢博客写什么内容,大家可以在评论区留言!! 正题 第一题 Fibonacci数列是这样定义的&#xff1a; F[0] 0 F[1] 1 for each i ≥ 2: F[i] F[i-1] F[i-2] 因此&#xff0c;Fibonacci数列就形如&#xff1a;0, 1, 1, 2, 3, 5, 8, 13, ...&#xff0c;在F…

Webshell-jsp 冰蝎流量

考点:冰蝎jsp流量解密crc碰撞png暴力爆破宽高 主要是和 main.jsp进行通信浅浅看一下 yjg.txt内容 用jsp写的一些脚本 过滤http流量 可以判断是 冰蝎 的jsp webshell 尝试爆破常用密钥 无果 那么 密钥一定在流量中 看冰蝎动态生成密钥的最后一个返回包 就是明文的key 尝试多试…

高考填报志愿选专业,理科生如何选专业?

理科相对比较好选专业&#xff0c;因为院校多&#xff0c;专业多&#xff0c;当然招生名额也多&#xff0c;对于一般普通家庭的学生来说&#xff0c;理科生比文科生的就业前景好。但这是一个就业形势十分严峻的时代&#xff0c;没有谁敢绝对的说自己一定能在某个专业中学到知识…

【设计模式深度剖析】【7】【行为型】【观察者模式】

&#x1f448;️上一篇:中介者模式 设计模式-专栏&#x1f448;️ 文章目录 观察者模式英文原文直译如何理解&#xff1f; 观察者模式的角色类图代码示例 观察者模式的应用观察者模式的优点观察者模式的缺点观察者模式的使用场景 观察者模式 观察者模式&#xff08;Observer…

人工智能系统中毒是一个日益严重的威胁

咨询公司 Protiviti 最近与一家客户公司合作&#xff0c;该公司遭遇了一次不寻常的攻击&#xff1a;一名黑客试图操纵输入该公司人工智能系统的数据。 公司领导仍在调查此次攻击&#xff0c;公司怀疑黑客试图扭曲人工智能系统的输出。 此类攻击并非新鲜事&#xff0c;但在网络…

C语言详解(预编译)

Hi~&#xff01;这里是奋斗的小羊&#xff0c;很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~~ &#x1f4a5;&#x1f4a5;个人主页&#xff1a;奋斗的小羊 &#x1f4a5;&#x1f4a5;所属专栏&#xff1a;C语言 &#x1f680;本系列文章为个人学习…

【code-server】Code-Server 安装部署

Code-Server 安装部署 1.环境准备 可以参考 https://coder.com/docs/code-server/install code-server的安装流程进行安装&#xff0c;主机环境是 Centos7 建议使用 docker 方式进行安装&#xff0c;可能会出现如下报错&#xff0c;需要升级 GNC 的版本&#xff0c;由于影响交…

RabbitMQ配置与交换机学习

Hi~&#xff01;这里是奋斗的小羊&#xff0c;很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~~ &#x1f4a5;&#x1f4a5;个人主页&#xff1a;奋斗的小羊 &#x1f4a5;&#x1f4a5;所属专栏&#xff1a;C语言 &#x1f680;本系列文章为个人学习…

《吸血鬼猎人D》观后感

前言 在B站无意中发现了一部动漫电影《吸血鬼猎人D》&#xff0c;看着封面还不错&#xff0c;就试着点开了视频&#xff0c;看了一会儿&#xff0c;发现画面很精美&#xff0c;人物造型高大威猛&#xff0c;肌肉线条清晰可见。如果我没记错的话&#xff0c;这种风格在日本动漫中…

C语言复习总结(含代码例程)

数据类型 基本类型&#xff1a;字符型、整型、浮点型、双精度浮点型 构造类型&#xff1a;数组、指针、结构体、共用体和枚举 字符型&#xff1a; 类型表示&#xff1a; (signed) char char -- 有符号 char 型 unsigned char -- 无符号 char 型 类型大小&#xff…

平衡树之B树

平衡树 ├── AVL 树 ├── 红黑树 ├── 2-3 树 ├── B 树 ├── Splay 树 └── Treap没研究明白&#xff0c;算啦。不写了

Opus从入门到精通(一)简介

Opus从入门到精通(一):简介 Opus是什么? Opus编解码器是专门设计用于互联网的交互式语音和音频传输。它是由IETF的编解码器工作组设计的&#xff0c;合并了Skype的SILK和Xiph. Org的CELT技术。 Opus编解码器的设计目的是处理广泛的交互式音频应用程序,包括IP语音,视频,游戏…

列出docker常用的命令

一、基础命令 docker run 创建并启动一个容器 docker ps 列出当前运行的容器 docker ps -a 列出所有容器&#xff0c;包括未运行的 docker stop 停止一个运行中的容器 docker start 启动一个已停止的容器 docker restart 重启容器 docker rm 删除一个或多个容器 docker pull 从…

揭秘Netflix背后的魔法:如何用三层架构打造个性化推荐帝国

推荐系统就像一家餐厅的菜单推荐 想象一下&#xff0c;你走进一家餐厅&#xff0c;面对琳琅满目的菜单&#xff0c;不知道点什么好。这时候&#xff0c;服务员给你推荐了几道菜&#xff0c;这些推荐是基于你以往的口味偏好和其他顾客的选择。Netflix的推荐系统也是类似的&…

浅谈golang字符编码

1、 Golang 字符编码 Golang 的代码是由 Unicode 字符组成的&#xff0c;并由 Unicode 编码规范中的 UTF-8 编码格式进行编码并存储。 Unicode 是编码字符集&#xff0c;囊括了当今世界使用的全部语言和符号的字符。有三种编码形式&#xff1a;UTF-8&#xff0c;UTF-16&#…

【PL理论】(21) 函数式语言:支持匿名函数 fun x → E | 设计递归函数 | 支持递归函数:let rec ...

&#x1f4ad; 写在前面&#xff1a;本章我们将讲解支持匿名函数&#xff0c;先回顾一下 F# 语言表示函数的方法&#xff0c;然后引出它。随后我们讲解一下如何设计递归函数&#xff0c;最后让我们的 F- 语言支持递归函数。 目录 0x00 回顾&#xff1a;F# 语言 0x01 支持匿名…

iOS--oc对象,类,和元类本质

iOS--oc对象&#xff0c;类&#xff0c;和元类本质 前言实例对象的具体结构自定义类对象的结构继承关系 类信息的存放对isa、superclass总结 前言 最近在学习runtime的过程中&#xff0c;发现其中消息发送-动态方法解析-消息转发中涉及到了大量的类与对象的底层知识&#xff0…

[NCTF 2018]flask真香

打开题目后没有提示框&#xff0c;尝试扫描后也没有什么结果&#xff0c;猜想是ssti。所以尝试寻找ssti的注入点并判断模版。 模版判断方式&#xff1a; 在url地址中输入{7*7} 后发现不能识别执行。 尝试{{7*7}} ,执行成功&#xff0c;继续往下走注入{{7*7}}&#xff0c;如果执…

ubuntu certbot 生成https ssl证书

一、安装certbot应用 sudo apt update sudo apt install certbot python3-certbot-nginx二、生成证书 # 泛域名&#xff1a; certbot certonly -d *.你的主域名 --manual --preferred-challenges dns# 主域名&#xff1a; certbot certonly -d 你的主/子域名 --manual --pref…

java实战——图书管理项目

文章目录 项目所需要的技术栈项目演示项目准备工作环境准备数据库数据准备 前后端交互分析&#xff08;前端代码我们使用现成&#xff09;图书列表界面的创建查看前端发送的请求根据前端接收的返回值来编写model层根据请求编写controller层根据controller编写Service根据Servic…