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



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

据我所知,AWS对其ES服务提供的访问控制程度是基于允许特定的HTTP谓词(GET、POST等(,为了简化我的生活和ES管理员的工作,我授予该应用程序"只读"权限,因此只有GET和HEAD

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

考虑到整个文档中查询DSL的优势,我想知道:

  1. 查询DSL是否公开了标准查询字符串参数所没有的功能,或者它们在功能上是等效的
  2. POST搜索端点是否会导致任何数据被实际POST,或者这只是一种变通方法,允许将JSON作为一个稍微违反REST约定的查询发送吗
  1. 根据文档

    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,则某些查询结果可能会出乎意料。你的确切用例是什么?我们在讨论哪些问题?

更多有用的信息在这里。

相关内容

最新更新