前言
刚接触ES不久的同学一定都遇到过这样的问题,复杂的查询场景下不知道怎么写DSL查询语句,
今天教大家一个小妙招,解决复杂DSL语句不会写的问题。
一、来吧,展示
巧用大招:
ES7以后已经提供了对sql查询的原生支持,虽然存在部分限制,但已经能适应大部分场景。
DSL查询语句大家可能运用的不太熟悉,SQL查询语句大家应该都非常熟悉了吧。
我们可以先通过SQL查询语句对索引数据进行查询,看查询结果是否满足要求,然后将SQL语句转为DSL语句,
这样就间接完成了复杂DSL编写。
1、 通过SQL查询索引
POST /_sql?format=txt { "query": "SELECT account,sum(money) sumMoney FROM order_index group by account order by sumMoney" }
2、 将SQL语句转为DSL语句
POST /_sql/translate { "query": "SELECT account,sum(money) sumMoney FROM order_index group by account order by sumMoney" }