【发布时间】:2022-11-10 21:12:10
【问题描述】:
我的应用程序中有一个要求:识别应用程序中昂贵的弹性搜索查询。
我只知道弹性搜索有 Query DSL。 (https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl.html
我需要在elasticsearch的反向代理中识别每个elasticsearch查询(反向代理是用java开发的,只是为了限制对ES的请求并做一些用户统计),如果它是昂贵的查询,只有有限的用户才能以特定的速率执行限制。
对我来说困难的是如何识别昂贵的查询。我知道弹性搜索有一个开关,可以通过设置这个参数来禁用/启用昂贵的查询。我阅读了弹性搜索源代码,但我找不到弹性搜索如何识别不同类型的昂贵查询。
如果你知道的话:
- 是否有任何可以识别昂贵查询的 elasticsearch API(来自 elasticsearch 客户端 sdk)?然后我可以直接在我的应用程序中调用 API。
- 如果没有,您知道通过分析查询正文来识别昂贵查询的有效方法是什么吗?通过一些 AST(抽象语法树)解析器?还是通过在查询正文中搜索特定关键字?
我真的很感激这方面的一些帮助!
【问题讨论】:
标签: java json elasticsearch abstract-syntax-tree