我正在通过elastic search Head插件尝试Elastic Search。
当我通过POST提交查询时,结果与预期一致。
但是,当我尝试使用GET进行相同的查询时,我总是会得到索引中的所有值。
那么:如何通过GET将查询传递到elastic search服务器,以便在URL中使用搜索字符串?
发布于 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本身内发送,并且没有指定参数的名称,如下所示:
http://localhost:9200/_search&{"query":{"term":{"text":"john"}}}
这可能是插件本身的一个bug,而elasticsearch无法找到查询,这就是为什么你会得到所有的结果。这意味着在使用elasticsearch head发送查询时,只有POST方法有效。
Elasticsearch允许同时使用GET和POST来执行查询。如果使用GET,则可以将查询作为正文发送,也可以使用source参数,如下所示:
http://localhost:9200/_search?source={"query":{"term":{"text":"john"}}}
https://stackoverflow.com/questions/12195017
复制相似问题