我们有一个体系结构,分别使用elasticsearch和hadoop进行近实时和批处理。我们接收数据并写入这两个系统,因此同步已经得到了处理,前提是在将行存储到hdfs中时存在一些延迟。
对ui内容的调用将使用querydsl查询elasticsearch。这些查询使用了elasticsearch套件的许多功能,如自定义分析器、匹配短语,以及其他在hive或mapreduce中没有等效功能的功能。
在我们的批处理过程中,我们将迁移到hdfs来对匹配elasticsearch查询的所有行进行完全导出,需要生成与发送到elasticsearch的查询相同的结果数据,但避免调用elasticsearch(就像在es hadoop中所做的那样),以避免对elasticsearch集群的性能造成影响。
是否有任何通用工具或过程可以将复杂的elasticsearch查询转换为可以在hadoop中应用相同过滤逻辑的查询?我们不需要考虑聚合或类似的事情,只需要查询过滤。
1条答案
按热度按时间oxcyiej71#
我们正在处理一个类似的情况,我们必须在客户端和后端应用elasticsearch对接收到的数据进行过滤。我们想出了自己的方法,将过滤器定义为表达式。
例如:if((name==jane&&age>18)| |(name==john&&age<18)),将表示为or(and(eq(name:jane),燃气轮机(age:18)))/和),(和)(等式(name:john),左(age:18)))/和/或)。
然后,我们使用它通过解析表达式来获得es查询或任何其他您想要的查询格式。