我正在通过 Elastic Search Head 插件尝试弹性搜索。
当我通过 POST 提交查询时,结果符合预期。
但是,当我使用 GET 尝试相同的查询时,我总是会返回索引中的所有值。
那么:如何通过 GET 将查询传递到弹性搜索服务器,以便我可以在 URL 中使用搜索字符串?
如果您发送 GET,正文可能甚至不会发送到 elasticsearch,因此您基本上不会向_search
端点,这就是为什么您可以恢复所有内容(当然,只有基于默认大小参数的前 10 个结果)。
看看URI请求 http://www.elasticsearch.org/guide/reference/api/search/uri-request.html,它允许您使用发送基本查询q
URI 中的参数。您可以使用Lucene 查询语法 http://www.lucenetutorial.com/lucene-query-syntax.html并指定链接页面中列出的一些其他参数。如果您想执行更高级的查询,您可能希望将它们表示为 JSON 查询,以获得 elasticsearch 的所有优势查询DSL http://www.elasticsearch.org/guide/reference/query-dsl/,但您需要将它们作为请求正文提供。
UPDATE
更深入地查看 elasticsearch head 插件,当您选择 GET 方法时,查询不会作为请求正文发送,而是在 URL 本身内发送,并且不指定参数名称,如下所示:
http://localhost:9200/_search&{"query":{"term":{"text":"john"}}}
这可能是插件本身的错误,elasticsearch 找不到查询,这就是为什么你会得到所有结果。这意味着在使用 elasticsearch head 发送查询时只有 POST 方法有效。
Elasticsearch 允许使用 GET 和 POST 来执行查询。如果您使用 GET,您可以将查询作为正文发送,也可以使用源参数,如下所示:
http://localhost:9200/_search?source={"query":{"term":{"text":"john"}}}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)