当结果少于scrollSize设置时,Scroll SearchResponse不可迭代

2024-04-18

我有一个这样的循环...

while (true) {
    scrollResp = client.prepareSearchScroll(scrollResp.getScrollId()).setScroll(new TimeValue(600000)).execute().actionGet();

    for (SearchHit hit : scrollResp.getHits()){
        // does this when totalHits > scrollSize, skips it otherwise
    }

    //Break condition: No hits are returned
    if (scrollResp.hits().hits().length == 0) {
        break;
    }
}

查询的scrollSize 设置为500。当scrollResp.getHits().totalHits()

一般来说,我期望每个查询有 > 500 个结果,但我需要它在任何一种情况下都能工作。不确定我是否可能错误地尝试迭代或什么。感谢您的反馈。


我相信你可以做这样的事情:

    // tested also with pageSize = 1
    final int pageSize = 100;
    SearchResponse firstScrollResponse = client
            .prepareSearch("db")
            .setTypes("collection")
            .setSearchType(SearchType.SCAN)
            .setScroll(TimeValue.timeValueMinutes(1))
            .setSize(pageSize)
            .execute()
            .actionGet();

    //get the first page of actual results
    firstScrollResponse = client.prepareSearchScroll(firstScrollResponse.getScrollId())
                                  .setScroll(TimeValue.timeValueMinutes(1))
                                  .execute()
                                  .actionGet();

    while (firstScrollResponse.getHits().hits().length > 0) {

        for (final SearchHit hit : firstScrollResponse.getHits().hits()) {
            // do smth with it
        }

        // update the scroll response to get more entries from the old index
        firstScrollResponse = client.prepareSearchScroll(firstScrollResponse.getScrollId())
                                      .setScroll(TimeValue.timeValueMinutes(1))
                                      .execute()
                                      .actionGet();
    }

技巧是首先从滚动中获取实际结果的第一页,因为第一个搜索响应不包含命中。

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

当结果少于scrollSize设置时,Scroll SearchResponse不可迭代 的相关文章

随机推荐

  • MVC ASP.NET 地图路由不适用于表单 GET 请求

    In View using Html BeginForm PageName ControllerName FormMethod Get
  • 如何在 C++ 中创建内存泄漏?

    我只是想知道如何使用 C 创建系统内存泄漏 我对此进行了一些谷歌搜索 但没有得到太多结果 我知道在 C 中执行此操作实际上不太可行 因为它是托管代码 但想知道是否有一种简单的方法可以用 C 执行此操作 我只是觉得看看系统因代码编写不正确而受
  • Netbeans - 类没有 main 方法

    我的程序只是一个简单的 System out println 但是netbeans找不到main方法 netbeans 6 7 1和WIN7有冲突吗 有什么可能的错误吗 当您手动移动主类位置时会发生这种情况 因为 Netbeans 不会刷新
  • 如何有条件地跳过 Cucumber 中的场景?

    如何有条件地跳过场景 例如 我希望仅在满足某些条件时才继续某个场景 但如果不存在 我不希望将其注册为失败 这是我遇到的一个问题 我编写的测试是针对一个 UI 该 UI 具有不断变化的 BE 数据库 我目前无法在其中包含静态数据 这意味着有时
  • 在 javascript 中查找经过的时间

    我是 JavaScript 新手 我正在尝试编写一段代码来计算从用户登录到当前时间所经过的时间 这是我的代码 function markPresent window markDate new Date document ready func
  • /admin 处导入错误:没有名为 defaults 的模块

    我正在将我的网站从 django 1 4 升级到 django 1 6 但它一直出现以下错误 admin 处的 ImportError 没有名为 defaults 的模块 其他地方都说你应该这样做 from django conf urls
  • 如何在IIS7.5上Response.Write?

    我正在尝试写一个给客户的回复 response StatusCode int HttpStatusCode BadRequest response ClearContent response Write String Format CRLF
  • 在delphi中的“自定义”浏览器中修改requestHeaders

    我的 deplhi 应用程序 IE 中集成了一个浏览器 我需要调用某个 Web 应用程序 并且需要在标头中为来自应用程序浏览器的所有请求附加一个新变量 例如 jquery 添加到 xhrobjHTTP X REQUESTED WITH范围
  • 使用 jQuery 进行渐变填充?

    我有一个 div 需要渐变背景 然而 div 的大小是可变的 这让我又回到了 不能在 CSS 中做渐变 的境地 然而 我很确定这在 jQuery 中是可能的 我只是似乎找不到一个合适的例子 有人可以指点我的方向吗 Thanks 如果有人需要
  • 如何更新猫鼬嵌套数组文档[重复]

    这个问题在这里已经有答案了 我知道这个问题是重复的 但我不知道为什么我被困住了 Question 我怎样才能编辑 requirement update 数组文档 使用 find by id and requirement update id
  • 带有条件 isset 的 If 语句和比较不能一起工作

    我在制作时遇到问题if声明 code if detail variable exists and is equal to 1 code if detail variable doesn t exist or is not equal 1 由
  • 如何向 dateadd sql 添加小时、分钟、秒?

    我想要一个完整的约会 所以今天是 7 7 2010 12 00 00 am 到 7 7 2010 11 59 59 pm 所以这应该是完整的 24 小时 因为上午 12 00 00 就是 8 号 所以我有这个 select DATEADD
  • Python Pandas - 根据组中值的存在来过滤组

    我需要按一列对数据框进行分组 然后过滤掉另一列中不包含特定值的所有组 例如 这是我的数据框 A B 1 False 1 True 2 False 2 False 3 True 3 False 4 False 我想按 A 列进行分组 然后删除
  • 当我使用 asp.net 从 xml 文件写入/读取时保留回车符

    我有 TextBox 来获取用户的评论 评论将保存到 XML 文件中 问题是当我写一个文本有回车键 新行 时 它会以正确的方式保存到xml中 像这样
  • Interface-Builder:将 NSView 类与 .xib“组合”

    我想在 Interface Builder 中设置一个自定义 NSView 但我无法让它在 OSX 上工作 在我的 ViewController 的 xib 中 我添加了一个自定义视图并将类设置为 MyCustomView 我创建了 MyC
  • 将限制限定指针传递给函数?

    限制限定指针向我解释为有一个规则 任何由指针访问并在任何地方修改的对象只能由指针访问 那么下面的方法是行不通的 对吧 void agSum int restrict x int n for int i 0 i
  • 如何设置 pexpect ssh 会话的列宽?

    我正在编写一个简单的 python 脚本来通过 SSH 连接到 SAN 运行一组命令 最终 每个命令将与时间戳一起记录到单独的日志中 然后退出 这是因为我们连接的设备不支持证书 ssh 连接 并且当前固件版本没有良好的日志记录功能 我似乎遇
  • SAS Do 循环:在循环内使用循环变量来创建滞后变量

    我想创建包含给定变量的滞后值的变量 以实现大量滞后 我怎么能这样做呢 我尝试以下操作 data out set in do i 1 to 50 let j i lag j Lag j x end run 如何获取循环变量i进入宏变量j或者如
  • 在 Python 中使用多处理创建超时函数

    我正在尝试使用多处理库在 Python 2 7 11 在 Windows 上 中创建超时函数 我的基本目标是 如果函数超时 则返回一个值 如果函数未超时 则返回实际值 我的方法如下 from multiprocessing import P
  • 当结果少于scrollSize设置时,Scroll SearchResponse不可迭代

    我有一个这样的循环 while true scrollResp client prepareSearchScroll scrollResp getScrollId setScroll new TimeValue 600000 execute