是否有可能将 elasticsearch 查询转换为可以在 hadoop 上应用相同过滤逻辑的东西?



我们有一个架构,它分别使用elasticsearch和Hadoop来处理近实时和批处理问题。我们摄取数据并写入两个系统,因此同步已经得到处理,前提是将行存储到 HDFS 中有一些滞后。

对 UI 内容的调用将使用查询 DSL 查询弹性搜索。这些查询使用 elasticsearch 套件的许多花里胡哨的东西,如自定义分析器、匹配短语和其他在 Hive 或 mapReduce 中没有等效项的查询。

我们的批处理之一,我们正在迁移到HDFS,以完全导出与elasticsearch查询匹配的所有行,需要生成与发送到elasticsearch的查询相同的结果数据,但避免调用elasticsearch(就像在es-hadoop中所做的那样(,以避免我们的elasticsearch集群的性能下降。

是否有任何通用工具或过程可以将复杂的 elasticsearch 查询转换为可以在 hadoop 中应用相同过滤逻辑的东西?我们不需要考虑聚合或类似的东西,只需查询过滤。

我们正在处理类似的情况,我们必须在客户端对收到的数据应用过滤,并在后端使用 Elasticsearch 应用过滤。我们想出了自己的方法来将过滤器定义为表达式。

例如:if((name == Jane && age> 18( ||(name == John && age <</p> 18((, 表示为 OR(AND(EQ(name:Jane(,GT(age:18(((/AND(,(AND(EQ(name:John(,LT(age:18(((/AND(/OR(。

然后,我们使用它通过解析表达式来获取 ES 查询或您想要的任何其他查询格式。

最新更新