如何在 Elastic High Level Rest Client 中使用 search_after 进行分页

2023-12-23

我正在使用弹性 RestHighLevelClient 与 ES 对话。我能够查询基本查询。尽管我正在尝试使用 search_after api 从我的前端查询中设计分页 api。尽管 query_after 在 RestLowLevelClient api 中使用起来很简单,但我无法弄清楚如何在 HighLevel API 中使用它。

看起来 lucene api 有 SearchAfterSortedDocQuery,但我无法弄清楚如何将它与弹性搜索 api 一起使用。例如:在下面的代码中,我初始化 SearchAfterSortedDocQuery 查询,但不确定如何使用它。

        RestHighLevelClient client = ESRestClient.getClient();

        SearchRequest searchRequest = new SearchRequest();
        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
        searchSourceBuilder.query(QueryBuilders.termQuery("field1",value1));
        searchSourceBuilder.query(QueryBuilders.termQuery("field2",value2));

        searchSourceBuilder.from(0);
        searchSourceBuilder.size(limit);
        SortField[] sortFields = new SortField[2];

        sortFields[0]= new SortField("field1", SortField.Type.LONG);
        sortFields[1]= new SortField("field2", SortField.Type.LONG);


        FieldDoc fieldDoc = new FieldDoc(0,0); //Is this correct? how to initialize field doc?
        fieldDoc.fields = new Object[2];
        fieldDoc.fields[0] = new Long("-156034");
        fieldDoc.fields[1] = new Long("2297416849");

        SearchAfterSortedDocQuery query = new SearchAfterSortedDocQuery(new Sort(sortFields), fieldDoc);
        searchRequest.source(searchSourceBuilder);
        searchRequest.indices("index1");

        try {
            SearchResponse response = client.search(searchRequest, RequestOptions.DEFAULT);
            System.out.println(response);
        }
        catch(IOException e){
            System.out.println(e);
        }

    }

我认为您不必使用 SearchAfterSortedDocQuery,只需在 searchSourceBuilder 中设置 search_after 如下所示

searchSourceBuilder.searchAfter(new Object[]{sortAfterValue});

之后使用 SearchRequest 和其余客户端来获取响应

SearchRequest searchRequest = new SearchRequest("index");
    searchRequest.types("type");
    searchRequest.source(searchSourceBuilder);

    SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT)
    SearchHits hits = searchResponse.getHits();

最后,您应该通过 getSortValues() 保留点击中的最后一个排序值以转到下一页。

hits.getAt(lastIndex).getSortValues()

Elasticsearch search_after api https://www.elastic.co/guide/en/elasticsearch/reference/6.7/search-request-search-after.html

希望这有帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Elastic High Level Rest Client 中使用 search_after 进行分页 的相关文章

  • 具有更高可见性的重写方法是良好的实践吗?

    回答这个问题 如何使用 GUI 使用 PaintComponent 初始化 GUI 然后添加基于鼠标的 GUI https stackoverflow com questions 21336141 how to gui using pain
  • 无法解析类型为 xxx 的任何 bean;限定符:[@javax.enterprise.inject.Any()]

    我有一个 LoginProvider 接口 public interface LoginProvider boolean login String username String password 以及两种不同的实现 public clas
  • “_加载小部件时出现问题”消息

    加载小部件时 如果找不到资源或其他内容 则会显示 加载小部件时出现问题 就这样 惊人的 此消息保留在主屏幕上 甚至没有说明加载时遇到问题的小部件 我通过反复试验弄清楚了这一点 但我想知道发生这种情况时是否有任何地方可以找到错误消息 Andr
  • 添加动态数量的监听器(Spring JMS)

    我需要添加多个侦听器 如中所述application properties文件 就像下面这样 InTopics Sample QUT4 Sample T05 Sample T01 Sample JT7 注意 这个数字可以多一些 也可以少一些
  • 无法使用maven编译java项目

    我正在尝试在 java 16 0 1 上使用 maven 构建 IntelliJ 项目 但它无法编译我的项目 尽管 IntelliJ 能够成功完成 在此之前 我使用maven编译了一个java 15项目 但我决定将所有内容更新到16 0 1
  • 如何从秘密字符串中制作 HMAC_SHA256 密钥以在 jose4j 中与 JWT 一起使用?

    我想生成 JWT 并使用 HMAC SHA256 对其进行签名 对于该任务我必须使用jose4j https bitbucket org b c jose4j wiki Home 我尝试根据秘密生成密钥 SecretKeySpec key
  • Android 自定义视图不能以正确的方式处理透明度/alpha

    我正在绘制自定义视图 在此视图中 我使用两个不同的绘画和路径对象在画布上绘画 我基本上是在绘制两个重叠的形状 添加 Alpha 后 视图中重叠的部分比图像的其余部分更暗 这是不希望的 但我不知道如何解决它 这是我的代码片段 用于展示我如何在
  • Java 8 中函数式接口的使用

    这是来自的后续问题Java 8 中的 双冒号 运算符 https stackoverflow com questions 20001427 double colon operator in java 8其中 Java 允许您使用以下方式引用
  • RSA OAEP、Golang 加密、Java 解密 -BadPaddingException:解密错误

    我正在尝试解密使用 RSA OAEP 在 Golang 中加密的字符串 但出现 BadPaddingException 解密错误 很难弄清楚我错过了什么 这是Golang加密方法 func encryptString rootPEM io
  • Java 数组的最大维数

    出于好奇 在 Java 中数组可以有多少维 爪哇language不限制维数 但是JavaVM规范将维度数限制为 255 例如 以下代码将无法编译 class Main public static void main String args
  • 计算日期之间的天数差异

    在我的代码中 日期之间的差异是错误的 因为它应该是 38 天而不是 8 天 我该如何修复 package random04diferencadata import java text ParseException import java t
  • Cloudfoundry:如何组合两个运行时

    cloundfoundry 有没有办法结合两个运行时环境 我正在将 NodeJS 应用程序部署到 IBM Bluemix 现在 我还希望能够执行独立的 jar 文件 但应用程序失败 APP 0 bin sh 1 java not found
  • 如何记录来自 Akka (Java) 的所有传入消息

    在 Scala 中 您可以使用 LoggingReceive 包装接收函数 如何通过 Java API 实现相同的目标 def receive LoggingReceive case x do something Scala API 有Lo
  • 如何在 Quartz 调度程序中每 25 秒运行一次?

    我正在使用 Java 的 Quartz Scheduling API 你能帮我使用 cron 表达式每 25 秒运行一次吗 这只是一个延迟 它不必总是从第 0 秒开始 例如 序列如下 0 00 0 25 0 50 1 15 1 40 2 0
  • 解决错误javax.mail.AuthenticationFailedException

    我不熟悉java中发送邮件的这个功能 我在发送电子邮件重置密码时遇到错误 希望你能给我一个解决方案 下面是我的代码 public synchronized static boolean sendMailAdvance String emai
  • JSON 到 hashmap (杰克逊)

    我想将 JSON 转换为 HashMapJackson http jackson codehaus org 这是我的 JSON String json Opleidingen name Bijz trajecten zorg en welz
  • Java的-XX:+UseMembar参数是什么

    我在各种地方 论坛等 看到这个参数 并且常见的答案是它有助于高并发服务器 尽管如此 我还是找不到 sun 的官方文档来解释它的作用 另外 它是Java 6中添加的还是Java 5中存在的 顺便说一句 许多热点虚拟机参数的好地方是这一页 ht
  • Android - 9 补丁

    我正在尝试使用 9 块图片创建一个新的微调器背景 我尝试了很多方法来获得完美的图像 但都失败了 s Here is my 9 patch 当我用Draw 9 patch模拟时 内容看起来不错 但是带有箭头的部分没有显示 或者当它显示时 这部
  • 在android中跟踪FTP上传数据?

    我有一个运行 Android 的 FTP 系统 但我希望能够在上传时跟踪字节 这样我就可以在上传过程中更新进度条 安卓可以实现这个功能吗 现在 我正在使用org apache common net ftp我正在使用的代码如下 另外 我在 A
  • 在哪里存储 Java 的 .properties 文件?

    The Java教程 http download oracle com javase tutorial essential environment properties htmlon using Properties 讨论如何使用 Prop

随机推荐

  • 使用 Outlook VBA 区分可见和不可见附件

    要求是将附件上传到服务器 但是 我们只想上传出现在 Outlook 的 消息 行 见下图 中的内容 而不是电子邮件正文中的其他内容 由于 Outlook 本身知道应在行中显示哪个附件 因此必须有用于在内部区分它们的信息 那么 我怎样才能在我
  • 使用 libgdx 在运行时用文本生成纹理

    我正在开发一个电话文字游戏 昨天 我决定使用 libgdx 切换到 OpenGL 以尝试提高图形性能和电池使用率 瞄准更多平台 字母图块在 2D 画布上绘图的方式是每个字母图块都会为自己创建一个位图 我会 从背景位图创建一个新的可变位图 在
  • 在不实际打开大写锁定的情况下打开键盘大写锁定指示灯的方法

    我正在编写一个程序 使用大写锁定 https en wikipedia org wiki Caps Lock作为拨动开关 如果能设置按键的 LED 来显示我的程序打开或关闭 就像 Caps Lock 键自然所做的那样 那就太好了 我知道我可
  • 使用 NSAttributedString 将 UILabel 中的文本居中

    对我正在开发的应用程序进行一些基本改进 对于 iOS 快速开发场景来说还是个新手 我认为代码中的文本行会自动居中 因为我将标签设置为居中 经过一番研究后 我发现事实并非如此 我如何将这样的代码对齐到中心 let atrString try
  • 如何抓取需要身份验证的 ASPX 页面

    使用 python 的库 Requests 我试图抓取一个 ASPX 网站 https cei bmfbovespa com br CEI Responsivo home aspx https cei bmfbovespa com br C
  • 如何在 Recharts 中为 YAxis 创建自定义垂直标签,该标签将缩放以适应标签太长的情况?

    我正在使用 Recharts 库和一些垂直标签构建一些组合图表YAxis太长并且被切断 我的标签被剪掉的照片 https i stack imgur com FUwrl png 我尝试使用自定义标签
  • “分支与起源是最新的”但实际上不是

    该消息是否有点误导 当结帐分支时 例如 b535 git 这样做并说 您的分支已更新为 origin b535 这听起来就像我当地分行的情况b535已是最新 git checkout b535 Previous HEAD position
  • 日期选择器的多个实例

    我如何能够使用日期选择器的多个实例 一个日期选择器正在工作 但日期选择器的下一个实例正在调用相同的弹出窗口 如何继续 任何人都可以给我您的电子邮件 ID 我会将整个代码邮寄给您 然后您将能够以更好的方式了解整个想法 http jsfiddl
  • Sequelize '自 v4.0.0 起需要显式提供方言'

    我需要在 node js 环境中运行第三方应用程序 但 Sequelize 抛出 自 v4 0 0 起需要显式提供方言 我在这里找到了类似的主题自 v4 0 0 起需要显式提供方言 https stackoverflow com quest
  • 打开活动而不显示 UIActivityViewController

    我希望能够在滚动视图中包含社交图标 当单击该图标时 其功能与我在呈现 UIActivityViewController 后单击它们时的功能相同 我不想呈现 UIActivityViewController 我知道这是不可能的 但是一个名为
  • CATransaction:图层更改但不动画

    我正在尝试在用户点击按钮时为 iPad 应用程序中的部分 UI 制作动画 我的操作方法中有这段代码 它的工作原理是 用户界面按照我的预期进行更改 但不会以动画方式进行更改 它只是立即改变 我肯定错过了什么 IBAction someActi
  • 可以从 (a,b) 移动到 (c,d)

    问题是输出是否可以从给定点移动 a b 达到目标 c d 我们仅限于正坐标 可以进行以下两种动作 a b gt a b b a b gt a b a 例如 1 1 to 5 4 is True您可以执行以下操作 使用第 2 步 3 次 1
  • 如何清空 JS 对象?

    我有一个像 var person id null name John Doe 将对象值插入数据库后 我将从服务器获取另一个对象 var personInDB id 1234 name John Doe 我用过angular merge使用更
  • 如何远程访问私有 docker-registry?

    我正在尝试使用来自以下位置的图像设置一个私有 docker 注册表 https github com docker docker registry https github com docker docker registry 只需运行 d
  • 使用 iTextSharp 将图像添加到 PDF 并正确缩放

    这是我的代码 它正确添加了我想要的图片并且一切正常except图像使用其原始分辨率 因此如果图像很大 则会被裁剪以适合页面 有没有什么方法可以让图片像缩放功能一样拉伸以适合 但又保持纵横比 那里一定有我想念的东西 P Here s a pi
  • R中的数据帧累积游程长度编码

    我有一个数据帧 其中包含与观察值 1 或 0 相关的值 我想计算 1 的连续出现次数 重置为 0 游程长度编码函数 rle 看起来它可以完成工作 但我无法将数据转换为所需的格式 我想尝试在不编写自定义函数的情况下执行此操作 在下面的数据中
  • 如何计算多边形的圆角?

    我正在寻找一种允许我从多边形创建圆角的算法 我有一个代表多边形的点数组 以红色轮廓 并且在输出时我想要一个代表带圆角的多边形 以黑色轮廓 的点数组 我还希望有一种方法来控制每个角的半径 我尝试使用贝塞尔曲线和细分 但这不是我想要的 贝塞尔曲
  • 从 avro 文件复制时导入 SUPER 列失败

    是否可以从 avro 文件复制到 SUPER 列 我正在使用以下查询来导入 copy small table from s3 xxxx redshift chunk 1782431332154490799 avro access key i
  • Ajax 控制台错误:ReferenceError:$ 未定义

    我的 html 页面上的一个小脚本有问题 它只是一个应该由 a 标记中的 onclick 方法调用的函数 它不起作用 每次我单击浏览器中的链接时 控制台都会显示 ReferenceError 未定义 并指向下面代码的第三行 您需要
  • 如何在 Elastic High Level Rest Client 中使用 search_after 进行分页

    我正在使用弹性 RestHighLevelClient 与 ES 对话 我能够查询基本查询 尽管我正在尝试使用 search after api 从我的前端查询中设计分页 api 尽管 query after 在 RestLowLevelC