为什么 POST 而不是在 elasticsearch head UI "any Request" 中获取

Why POST and not GET in elasticsearch head UI "any Request"

我遇到了类似的问题 asked here.

我在 head 插件中 运行 宁以下查询,任何请求选项卡(带有 _search 端点和 GET):

{
    "query": {
    "match": {
    "body": "mulla"
}}}

我所有的文档都很成功,所有的得分都是 1,并解释说 ConstantScore(*:*).

在链接的问题中,有人回答说您必须确保使用 POST 而不是 GET,它按预期工作(返回具有不同分数的所有文档的子集)。我的问题是为什么 POST 而不是 GET? elasticsearch 指南中的比较示例说使用 GET。

此外,如果我 运行 与 curl 相同的请求:

curl -i -XGET 'http://localhost:9200/dagb/_search' -d '
{
"query": {
"match": {
"body": "mulla"
 }}}'

它按预期工作,在 head 插件中给出与 POST 请求相同的分数和文档。另外我刚刚检查过,带 -XPOST 的 curl 版本也可以。

使用google chrome开发者工具,可以看到执行的请求。如果您使用 head 插件并将请求类型从 POST 更改为 GET,则 json 文档不会作为正文发送。 json 文档附加到请求中。弹性搜索不支持。请求必须作为请求正文发送。使用 curl,您可以将其作为正文发送。下面是已执行请求的示例。

http://localhost:9200/gridshore/_search?{%22query%22:{%22match%22:{%22content%22:%22cool%22}}}

最后 elasticsearch 将此查询视为与

相同

http://localhost:9200/gridshore/_search