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

Pet*_*ter 20 url post get elasticsearch

我正在通过Elastic Search Head插件试验弹性搜索.

当我通过POST提交查询时,结果如预期.

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

那么:如何通过GET将查询传递给弹性搜索服务器,这样我就可以在URL中使用搜索字符串了?

jav*_*nna 29

如果你发送一个GET主体可能甚至没有被发送到elasticsearch,所以你基本上没有向_search端点发送任何查询,这就是你得到所有东西的原因(当然只有基于默认大小参数的前10个结果).

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

更新
深入研究elasticsearch head插件,当您选择GET方法但在URL本身内并且未指定参数名称时,查询不会作为请求主体发送,如下所示:

http://localhost:9200/_search&{"query":{"term":{"text":"john"}}}
Run Code Online (Sandbox Code Playgroud)

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

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

http://localhost:9200/_search?source={"query":{"term":{"text":"john"}}}
Run Code Online (Sandbox Code Playgroud)