一尘不染

在elasticsearch中使用GET / POST时的结果不同

elasticsearch

我正在尝试通过Elastic Search Head插件进行elasticsearch。

通过POST提交查询时,结果符合预期。

但是,当我使用GET尝试相同的查询时,我总是会取回索引中的所有值。

因此:如何通过GET将查询传递给elasticsearch服务器,以便可以在URL中使用搜索字符串?


阅读 1681

收藏
2020-06-22

共1个答案

一尘不染

如果发送GET,则正文甚至可能不会发送给elasticsearch,因此基本上不会向_search端点发送查询,这就是为什么要返回所有内容的原因(当然,仅基于默认size参数的前10个结果)。

看一下URI请求,它使您可以使用qURI中的参数发送基本查询。您可以使用Lucene查询语法并指定链接页面中列出的其他一些参数。然后,如果您想执行更高级的查询,则可能希望将它们表示为JSON查询,以便获得elasticsearch
Query DSL的所有优点,但是您需要将它们作为请求的主体提供。

更新
在elasticsearch头插件中,选择GET方法时,查询不是作为请求正文发送,而是在URL本身内且未指定参数名称的情况下发送,如下所示:

http://localhost:9200/_search&{"query":{"term":{"text":"john"}}}

这可能是插件本身的错误,elasticsearch无法找到查询,这就是为什么要返回所有结果的原因。这意味着在使用elasticsearch
head发送查询时,只有POST方法有效。

Elasticsearch允许同时使用GET和POST来执行查询。如果使用GET,则可以将查询作为正文发送,也可以使用source参数,如下所示:

http://localhost:9200/_search?source={"query":{"term":{"text":"john"}}}
2020-06-22