RestClient查询文档

news2024/12/25 12:24:42

文章目录

  • 1、RestClient查询文档----快速入门
  • 2、查询文档--match、term、range、bool
  • 3、查询文档-排序和分页
  • 4、高亮

1、RestClient查询文档----快速入门

基本步骤
1.先创建SearchRequest对象,调用source方法(DSL)——>相当于红框内的大json

2.调用query方法,里面构成查询条件——>QueryBuilders来构建查询条件(比如下面的matchAllQuery())

3.查询条件弄好后,再发送请求即可client调用search方法
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
4.最后,解析结果
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、查询文档–match、term、range、bool

全文检索的matchQuery和multiMatchQuery其实与matchAll的API基本一致,差别是查询的条件,也就是query那部分不一致;

根据酒店名查询酒店信息

( 1 )、
在这里插入图片描述

核心:条件的改变全部都是由QueryBuilders决定的,改变它调用的api即可

在这里插入图片描述

( 2 )、
在这里插入图片描述

( 3 )、

在这里插入图片描述

( 4 )、

在这里插入图片描述

3、查询文档-排序和分页

在这里插入图片描述
在这里插入图片描述

4、高亮

注意:高亮的话,肯定是对关键字高亮,那么查询文档不能用query:match_all,我们可以用matchQuery();

1.首先,先得到高亮文档,source就相当于整个大的json数据,然后从外往里即可

在这里插入图片描述

  /**
     * 高亮测试
     */
    @Test
    void testHighlight() throws IOException {
        SearchRequest request = new SearchRequest("hotel");
        //准备query
        request.source().query(QueryBuilders.matchQuery("name","如家"));
        //准备字段高亮
        request.source().highlighter(new HighlightBuilder().field("name").requireFieldMatch(false));
 
        //发送请求
        SearchResponse response = client.search(request, RequestOptions.DEFAULT);
 
        //解析响应
        extracted(response);
    }

2.我们获取到高亮文档之后,因为高亮字段是不再_source里面的,所以我们需要对响应结果的解析进行修改

在这里插入图片描述

/**
     * 辅助方法,解析响应结果
     *
     * @param response:响应结果
     */
    private void extracted(SearchResponse response) {
        /**
         * 第二部分:响应结果的解析
         */
        SearchHits searchHits = response.getHits();
        //4.1得到总条数
        long total = searchHits.getTotalHits().value;
        System.out.println("共获取到" + total + "条数据");
 
        //4.2文档数组
        SearchHit[] hits = searchHits.getHits();
 
        //4.3遍历
        for (SearchHit hit : hits) {
            //获取文档source
            String json = hit.getSourceAsString();
 
            //将文档source利用fackjson进行反序列化得到HotelDoc对象
            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);
        }
    }

在这里插入图片描述
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

最前端|什么是低代码?与传统开发的区别是什么?

目录一、低代码介绍二、背景趋势三、低代码与传统代码开发&#xff08;一&#xff09;低代码能否替代传统开发低代码页面传统开发页面&#xff08;二&#xff09;相同业务不同方式对比1.低代码开发&#xff08;1&#xff09;优点&#xff08;2&#xff09;缺点2.传统代码开发&a…

实现一个登录功能方案设计2

需求MySQL表实现方案index页面home页面需求 实现一个登录功能 实现的功能 注册(邮箱注册)登录(邮箱密码)重置密码查看操作记录(登录, 注册, 重置密码, 登出. 都算操作)登出在第一版的基础上进行优化:\ 优化点: 存操作信息请求的post使用中间件进行储存操作信息.避免重复代码 因…

【面试】如何设计SaaS产品的数据权限?

文章目录前言数据权限是什么&#xff1f;设计原则整体方案RBAC模型怎么控制数据权限&#xff1f;1. 数据范围权限控制2. 业务对象操作权限控制3. 业务对象字段权限控制总结前言 一套系统的权限可以分为两类&#xff0c;数据权限和功能权限&#xff0c;今天我们从以下几个点&am…

阿里云服务器安装宝塔面板搭建网站全流程(一步步详解)

阿里云服务器安装宝塔面板教程&#xff0c;云服务器吧以阿里云Linux系统云服务器安装宝塔Linux面板为例&#xff0c;先配置云服务器安全组开放宝塔所需端口8888、888、80、443、20和21端口&#xff0c;然后执行安装宝塔面板命令脚本&#xff0c;最后登录宝塔后台安装LNMP&#…

UML 简易使用教程

最近刚好有空&#xff0c;遂决定对应 UML 常用的一些图进行整理&#xff0c;供自己以及需要的人查阅。 UML 分为静态模型与动态模型。静态模型描述一个系统的静态特征&#xff0c;固定的框架结构。包括用例图、类图、对象图、组件图、部署图&#xff1b;动态模型包括时序图、协…

TensorFlow 智能移动项目:11~12

原文&#xff1a;Intelligent mobile projects with TensorFlow 协议&#xff1a;CC BY-NC-SA 4.0 译者&#xff1a;飞龙 本文来自【ApacheCN 深度学习 译文集】&#xff0c;采用译后编辑&#xff08;MTPE&#xff09;流程来尽可能提升效率。 不要担心自己的形象&#xff0c;只…

Flutter 第一个界面

第一个页面 app首页 入口函数 一个Flutter工程的入口函数与Dart命令行工程一样是main&#xff0c;不同的是在Flutter中执行runApp(ArticleApp()) 就能够在手机屏幕上展示这个Widget。 import package:flutter/material.dart; void main() > runApp(new ArticleApp()); Ar…

OpenAI不能访问有什么方法解救呢?试试这方法吧

最近发现国内不挂代理是不能访问到openAI的接口的&#xff0c;为了解决这个问题&#xff0c;我一直在github上需在解决方案&#xff0c;今天终于被我找到一个大神开源了一个解决方案。下面就来看看如何做吧。 整个项目的代码很简单只有几行代码&#xff1a; {"rewrites&q…

几种在Python中List添加、删除元素的方法

嗨害大家好鸭&#xff01;我是爱摸鱼的芝士❤ 一、python中List添加元素的几种方法 List 是 Python 中常用的数据类型&#xff0c; 它一个有序集合&#xff0c; 即其中的元素始终保持着初始时的定义的顺序 &#xff08;除非你对它们进行排序或其他修改操作&#xff09;。 …

进程互斥的实现方式

1.进程互斥的软件实现方法 1.单标志法 算法思想&#xff1a;两个进程在访问完临界区后会把使用临界区的权限转让给另一个进程&#xff0c;也就是说每个进程进入临界区的权限只能被另一个进程赋予 局限性 2.双标志先检查法 算法思想&#xff1a;设置一个布尔数组flag[]&#xff…

python 笔记:PyTrack(将GPS数据和OpenStreetMap数据进行整合)【官网例子解读】

论文笔记&#xff1a;PyTrack: A Map-Matching-Based Python Toolbox for Vehicle Trajectory Reconstruction_UQI-LIUWJ的博客-CSDN博客4 0 包的安装 官网的两种方式我都试过&#xff0c;装是能装成功&#xff0c;但是python import PyTrack包的时候还是显示找不到Pytrack …

Altova MapForce 2023 Crack

Altova MapForce 2023 Crack 数据映射项目中的注释-除了支持对数据映射项目的单个连接进行注释外&#xff0c;现在还可以向源组件和目标组件添加注释&#xff0c;以帮助记录映射的作用和实现方式。 支持XML输出中的standalone“yes”声明-在独立文档声明中&#xff0c;值“yes”…

Chat-GLM 详细部署(GPU显存>=12GB)

建议配置: ( Windows OS 11 部署 )CPU-i7 13700F ~ 13700KF RAM: 16GB DDR4 GPU: RTX3080(12G) 安装 conda: 1. 下载安装 miniconda3 &#xff1a; https://docs.conda.io/en/latest/miniconda.html conda是一个包和环境管理工具&#xff0c;它不仅能管理包&#xff0c;还能隔…

Linux嵌入式学习之Ubuntu入门(四)Makefile

系列文章目录 一、Linux嵌入式学习之Ubuntu入门&#xff08;一&#xff09;基本命令、软件安装及文件结构 二、Linux嵌入式学习之Ubuntu入门&#xff08;二&#xff09;磁盘文件介绍及分区、格式化等 三、Linux嵌入式学习之Ubuntu入门&#xff08;三&#xff09;用户、用户组…

go语言切片做函数参数传递+append()函数扩容

go语言切片函数参数传递append()函数扩容 给你二叉树的根节点 root 和一个整数目标和 targetSum &#xff0c;找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。 二叉树递归go代码&#xff1a; var ans [][]int func pathSum(root *TreeNode, targetSum int) ( [][…

Longitudinal Change Detection on Chest X-rays Using Geometric Correlation Maps

文章来源&#xff1a;[MICCAI2019] Keywords&#xff1a;Chest X-ray&#xff1b;Longitudinal analysis&#xff1b;Change detection&#xff1b;Geometric correlation 一、本文提出的问题以及解决方案 在胸部X-ray图像的诊断中&#xff0c;医生会考虑与先前检查相比病变的…

8.网络爬虫—正则表达式RE实战

8.网络爬虫—正则表达式RE实战正则表达式&#xff08;Regular Expression&#xff09;re.Ire.Are.Sre.Mre.Xre.Lre.U美某杰实战写入csv文件&#xff1a;前言&#xff1a; &#x1f3d8;️&#x1f3d8;️个人简介&#xff1a;以山河作礼。 &#x1f396;️&#x1f396;️:Pyth…

MongoDB 聚合管道的文档操作($sort,$skip,$limit,$sample,$unwind)

目前为止&#xff0c;我们已经介绍了一部分聚合管道中的管道参数&#xff1a; $match&#xff1a;文档过滤 $group&#xff1a;文档分组&#xff0c;并介绍了分组中的常用操作&#xff1a;$addToSet&#xff0c;$avg&#xff0c;$sum&#xff0c;$min&#xff0c;$max等。 $add…

COCO数据集相关知识介绍

&#x1f468;‍&#x1f4bb;个人简介&#xff1a; 深度学习图像领域工作者 &#x1f389;总结链接&#xff1a; 链接中主要是个人工作的总结&#xff0c;每个链接都是一些常用demo&#xff0c;代码直接复制运行即可。包括&#xff1a; &am…

SpringTx 源码解析 - @Transactional 声明式事务执行原理

一、Spring Transactional 声明式事务执行原理 Transactional 是 Spring 框架中用于声明事务的注解&#xff0c;可以标注在方法或类上。当标注在类上时&#xff0c;表示该类的所有public方法都将支持事务。当标注在方法上时&#xff0c;表示该方法将在一个事务内执行。 Trans…