Elasticsearch:根据时间(第一个和最后一个)仅查询索引中的特定文档

时间:2018-01-22 09:14:12

标签: apache-spark elasticsearch

我有一个包含大约400万个文件的索引。 这些字段通常如下所示:systemname,filename,timestamp,message,version等,

我想得到的是每个文件名的第一个和最后一个文档(基于时间戳)。

我现在正在做的是:

查询整个索引
根据文件名定义窗口
按升序排序
添加rownumber
添加max_rownumber
过滤rownumber = 1或rownumber = max_rownumber
的所有条目 这真的很慢

代码可以在这里看到:Getting first and last entry of window

ES版本:6.0.0 ES Spark Connector:elasticsearch-spark-20 6.0.0 Scala版本2.11.8 Spark版本:2.2

有人知道如何加快速度吗? 最好的方法可能是使I / O更小,但有弹性的搜索没有火花聚合。我还发现无法仅查询文档的特定字段。对于此示例,仅查询每个文档的10个字段中的5个就足够了。  此计算在具有112个核心的群集上花费超过15个小时。

如果有人可以帮我解决一个非常好的解决方案。我没有选择/想法。 无法查询聚合似乎成为弹性搜索的破解者,但我不想切换。

0 个答案:

没有答案