ElasticSearch多个滚动Java API

我想从索引中获取所有数据。由于项数太大而无法存储,因此我使用了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多个滚动Java API 的全部内容, 来源链接: utcz.com/qa/425225.html

回到顶部