Elasticsearch是否会产生结果?

时间:2014-06-20 15:03:28

标签: elasticsearch

Elasticsearch是否会对查询结果进行流式处理"计算"或者是否计算所有内容然后将最终回复返回给客户?

4 个答案:

答案 0 :(得分:5)

默认情况下,elasticsearch只会为查询返回一组有限的结果。 (即,搜索*将仅返回默认计数集,而不管匹配的数量)。

一般来说,为了实现“流式传输”,您需要进行初始搜索以获取匹配文档的总数,然后查询范围内的文档(即前10个,后10个等)。

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-from-size.html

如何请求返回的文件数量。

答案 1 :(得分:1)

您是否尝试过滚动查询?

https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-scroll.html比分页更容易处理。

  

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

答案 2 :(得分:1)

不,到目前为止,Elastic 不支持此功能。 Elastic API 使用传统的请求/响应模型。查询结果被分页,在服务器端缓存,然后发送回客户端。以流式方式真正读取响应正文似乎不在 Elastic 路线图中。

话虽如此,对于大的结果集,滚动 API 已被弃用,而且从未用于实时用户查询。目前最好的选择是 search_after,它可以被视为传统 RDBMS 中的游标。

答案 3 :(得分:0)

回答评论中的问题:

  

因此,问题是出口大型结果的正确方法   “报告”类型系统?我不是在谈论前端?我在说话   关于将执行自定义查询的后端应用程序   使用300000 +结果

构建一个文件

我确信可能有正当理由这样做,但对我而言,这听起来像是你用锤子来驱动螺丝。使用elasticsearch的重点是使用它的聚合功能在数据存储中进行更多的计算。

Aggregations Documentation

如果你真的需要300000条记录的原始数据,那就是你需要的。但是,如果它是一个报告,则意味着您正在对数据进行一些操作以进行度量。 ES的重点在于它允许您即时构建“自定义报告”。我怀疑将尽可能多的逻辑放入查询中更快,而不是简单地操纵原始数据。

在不了解更多要求的情况下,我无法提出更好的答案。