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

标签 elasticsearch querydsl

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

据我所知,AWS通过其ES服务提供的访问控制程度是基于允许特定的HTTP动词(GET,POST等)来简化我和ES管理员的工作,因此,我授予了此权限应用的“只读”权限,因此仅GET和HEAD

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

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

  • 查询DSL是否公开了标准查询字符串参数不具备的功能,或者它们在功能上均等效?
  • POST搜索端点是否会导致实际上已发布任何数据,或者这仅是一种变通方法,它允许将JSON作为查询发送,这与REST约定有点冲突?
  • 最佳答案

  • 按照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.

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

  • 仅供引用,更有用的信息是herehere

    关于elasticsearch - 在Elasticsearch搜索中,GET请求的查询字符串参数和POST请求的 “Query DSL”在功能上是否等效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61125333/

    相关文章:

    java - QueryDSL,其中关系可能为空

    spring-boot - ElasticsearchRestTemplate滚动获取下一页

    elasticsearch - elasticsearch中的跨数据中心复制策略

    java - 如何使用 JOOQ 或任何其他库使用以下数据构建方言敏感的 SQL 查询?

    elasticsearch - 如何在 Elasticsearch 上进行联合查询?

    java - 将 JPQL 转换为 QueryDSL

    java - Spring Data MongoDB : How to Dump Raw Query/Commands generated through QueryDsl?

    elasticsearch - 我可以在 Elasticsearch 集群中手动设置事件主节点吗?

    mongodb - elasticsearch:从mongodb重新同步索引

    elasticsearch - Kafka vs Filebeat将Shippong日志转换为Logstash