当前位置: 首页 > 面试题库 >

ElasticSearch多个滚动Java API

米景辉
2023-03-14
问题内容

我想从索引中获取所有数据。由于项数太大而无法存储,因此我使用了Scroll(很好的功能):

client.prepareSearch(index)
    .setTypes(myType).setSearchType(SearchType.SCAN)
    .setScroll(new TimeValue(60000))
    .setSize(amountPerCall)
    .setQuery(MatchAll())
    .execute().actionGet();

调用时效果很好:

client.prepareSearchScroll(scrollId)
    .setScroll(new TimeValue(600000))
    .execute().actionGet()

但是,当我多次调用前一个方法时,会得到相同的scrollId多次,因此无法并行滚动多次。

我找到了http://elasticsearch-users.115913.n3.nabble.com/Multiple-scrolls-
simultanious-td4024191.html
,其中指出这是可能的-尽管我不知道他与ES的隶属关系。

难道我做错了什么?


问题答案:

搜索更多之后,我得到的印象是(相同scrollId)是设计使然。超时到期后(每次调用Elasticsearch扫描并滚动后将其重置-添加到新索引)。

因此,每个索引只能获得一个打开的滚动。

https://www.elastic.co/guide/zh-CN/elasticsearch/reference/current/search-
request-
scroll.html

指出:

滚动并不是为了实时用户请求,而是为了处理大量数据,例如为了将一个索引的内容重新索引为具有不同配置的新索引。

因此,似乎我想要的不是故意的选项-可能是由于优化

更新
如前所述创建多个卷轴不能这样做,但是当你使用滚动查询是一样的,这是唯一的真实。如果你scroll的,例如,另一个typeindex或只是一个query,你可以有多个scrolls



 类似资料:
  • 问题内容: 我对Elasticsearch的滚动功能感到有些困惑。在Elasticsearch中,是否每当用户滚动结果集时都可以调用搜索API?从文档 这是否意味着它将每30秒执行一次搜索并返回所有结果集,直到没有记录为止? 例如,我的ES总共返回500条记录。我从ES获得的数据是两组分别有250条记录的记录。有什么办法可以让我先显示第一组250条记录,当用户滚动时再显示第二组250条记录。 问题

  • 问题内容: 我在Elastic Search中遇到了滚动功能,这看起来很有趣。我浏览了许多文档,但对我而言仍然不清楚以下问题。 如果偏移量已经存在,那么为什么要使用滚动? 那即将到来的记录呢?假设它完成了所有数据的滚动,然后几秒钟后新数据进入了索引,那么它将如何工作?它还会滚动以获取新记录,例如流媒体吗? 假设由于服务器负载或Internet问题导致连接断开,那么它将从头开始滚动数据吗? 所有这些

  • 问题内容: 滚动搜索可以设置的最大滚动时间是多少? 文档:https : //www.elastic.co/guide/zh- CN/elasticsearch/client/javascript-api/current/api-reference.html#api- scroll 问题答案: 没有最大滚动时间的所有值。 扫描和滚动旨在以块的形式扫描大量记录。每个块的最大值必须通过增量增加来获得,

  • 问题内容: 我有多个Tkinter列表框,可以使用单个滚动条一起滚动,但是我也希望它们一起滚动,以便在任何列表框上进行鼠标滚轮活动。 这该怎么做? 我当前的代码基于此处讨论的最后一个模式:http : //effbot.org/tkinterbook/listbox.htm 仅使用滚动条时,它可以很好地工作,但是使用鼠标滚轮时,列表框可​​以独立地滚动。 问题答案: 解决问题的方法与将两个小部件连

  • 问题内容: 我在同一台Ubuntu服务器上有一个Rails 3应用程序的暂存和生产实例(使用tyre gem)。看来这两个实例都共享相同的elasticsearch索引,这显然不是我想要的。 如何使生产和登台实例使用单独的实例? 问题答案: 您需要覆盖索引名称。假设您要绑定ActiveRecord,它将根据相关模型创建索引名称。您可以使用这样的前缀来调整名称; 然后会创建一个名为的索引,以此类推。

  • 问题内容: 我定义了以下滚动索引: 今天效果很好,它收集了我所有 现有的 每月滚动指标。问题在于,当索引滚动到新的月份时,它会自动生成的新索引,但是我的别名无法获取该新索引。每个月我需要通过运行以下命令来更新别名: 有什么方法可以让ES自动选择? 问题答案: 是的,您可以使用模板。 空对象是必然的邪恶,因为JSON期望。 每当创建匹配索引(基于参数)时,它将自动将模板应用到该索引。在这种情况下,模