在 Elasticsearch 搜索中,GET 请求的查询字符串参数和 POST 请求的 "Query DSL" 在功能上是否等效?

In Elasticsearch searches, are query string parameters for GET requests and the "Query DSL" for POST requests functionally equivalent?

我正在尝试创建一个小型应用程序来显示一些简单的可视化效果,这些数据来自在 Elasticsearch 上(在 AWS 托管的 Elasticsearch 服务上)索引的数据。

据我所知,AWS 对其 ES 服务提供的访问控制程度是基于允许特定的 HTTP 动词(GET、POST 等),以简化我的生活和ES 管理员,我授予此应用 "read only" 权限,因此 仅 GET 和 HEAD

但是,我看到它的搜索 API,ES 公开了一个使用查询字符串参数的 GET 端点,以及一个 POST 端点使用基于 JSON 的 "Query DSL"。在我在网上和书中看到的所有示例中,这种 DSL 似乎都是首选方法。

鉴于整个文档中查询 DSL 的优势,我想知道:

  1. Query DSL 是否公开了标准查询字符串参数不公开的功能,或者它们在功能上是等效的?
  2. POST 搜索端点是否会导致任何数据实际上是 POSTED,或者这只是一种允许发送 JSON 作为稍微中断的查询的解决方法符合 REST 约定?
  1. 根据 docs

    You can use query parameters to define your search criteria directly in the request URI, rather than in the request body. Request URI searches do not support the full Elasticsearch Query DSL, but are handy for testing.

  2. GET 行为有点令人困惑,但当您对主体执行 GET 时,即使 Kibana 也会在后台发送 POST。如果您 使用 GET,某些查询结果可能会出乎意料。您的确切用例是什么?我们在谈论哪些查询?

仅供参考,更有用的信息是 here and