首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在弹性搜索中使用GET/POST的结果不同

在弹性搜索中使用GET/POST的结果不同
EN

Stack Overflow用户
提问于 2012-08-30 18:39:57
回答 1查看 13.8K关注 0票数 21

我正在通过elastic search Head插件尝试Elastic Search。

当我通过POST提交查询时,结果与预期一致。

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

那么:如何通过GET将查询传递到elastic search服务器,以便在URL中使用搜索字符串?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-30 19:29:39

如果您发送一个GET,那么主体可能甚至不会发送到elasticsearch,所以您基本上不会向_search端点发送查询,这就是为什么您将获得所有内容(当然,只有基于默认大小参数的前10个结果)。

看一下URI request,它允许您在URI中使用q参数发送基本查询。您可以使用Lucene query syntax并指定链接页面中列出的其他一些参数。如果您想要执行更高级的查询,您可能希望将它们表示为JSON查询,以便获得elasticsearch Query DSL的所有好处,但您需要将它们作为请求的主体提供。

更新

深入研究elasticsearch head插件,当您选择GET方法时,查询不会作为请求正文发送,而是在URL本身内发送,并且没有指定参数的名称,如下所示:

代码语言:javascript
复制
http://localhost:9200/_search&{"query":{"term":{"text":"john"}}}

这可能是插件本身的一个bug,而elasticsearch无法找到查询,这就是为什么你会得到所有的结果。这意味着在使用elasticsearch head发送查询时,只有POST方法有效。

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

代码语言:javascript
复制
http://localhost:9200/_search?source={"query":{"term":{"text":"john"}}}
票数 34
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12195017

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档