我有一个包含大约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个小时。
如果有人可以帮我解决一个非常好的解决方案。我没有选择/想法。 无法查询聚合似乎成为弹性搜索的破解者,但我不想切换。