如何在presto elasticsearch中按子句pushdpown order

Posted

技术标签:

【中文标题】如何在presto elasticsearch中按子句pushdpown order【英文标题】:How to pushdpown order by clause in presto elasticsearch 【发布时间】:2020-12-02 08:39:54 【问题描述】:

我正在 starburst-presto 中运行 SQL 查询。它使用相关连接器连接到 elasticsearch。

SQL 有一个“order by”子句。此子句不会下推到 elasticsearch。基本上,我想根据特定字段对elasticsearch中的数据进行排序并返回结果。使用 presto 的“order by”查询需要花费大量时间。是否有可能以某种方式获得最佳性能?

SQL:select e.employee_id from elasticsearch.es."employee:id:""2390571"" && (doj_timestamp:(>=15965454 && <=15972366)) sort=employee_id:desc" e offset 0 limit 5;

以上查询返回随机结果。

有人可以帮忙吗?

【问题讨论】:

【参考方案1】:

您的查询同时具有 ORDER BY 和 LIMIT,因此在 Presto 中它被称为 Top N 查询。 Presto 目前不提供 Top N 下推,但此功能正在开发中。

连接器下推问题:https://github.com/prestosql/presto/issues/18 Top N 下推的 PR 草案(引擎和 SPI 支持):https://github.com/prestosql/presto/pull/4784

请针对 Elasticsearch 连接器 TopN 下推提出问题。无论如何我们都会实施它,但直接的用户反馈有助于了解问题的优先级。

您可以通过Presto community slack#pushdown 频道了解更多信息。

【讨论】:

感谢@Piotr 提供的信息。我一直在努力在网站上获得这个,最后我下载了 presto github 代码并找到了相同的。我已将自己添加到频道中并在那里记录了我的问题。你想让我把问题提交到其他地方吗? 为了后代,问题链接 - github.com/prestosql/presto/issues/4803

以上是关于如何在presto elasticsearch中按子句pushdpown order的主要内容,如果未能解决你的问题,请参考以下文章

SQL / Presto SQL:在同一列中按组求和

在 Hive 和 Presto 中按分组聚合字符串并按顺序排序

尝试在 presto ( spark ) 上运行 Elasticsearch 查询时连接被拒绝

在elasticsearch中,如何在嵌套数组中按值分组

presto-mysqlpresto-elasticsearch关联查询java-presto-jdbc入门实战.

是否可以在 ElasticSearch 中使用 presto 或 Hive (ElasticSearch-Hadoop) 的任何 ES 连接器进行 JOIN 操作?