为什么POST而不是在弹性搜索头部UI中获取"任何请求"

时间:2015-02-06 10:07:21

标签: post elasticsearch get elasticsearch-plugin

我遇到了类似的问题 asked here

我在head插件中运行了以下查询,任何请求选项卡(使用_search endpoint和GET):

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

我的所有文件都很受欢迎,得分都是1,解释说像ConstantScore(*:*)。

在链接的问题中,有人回复说你必须确保使用POST而不是GET,这可以按预期工作(返回所有文档的不同分数的子集)。这是我的问题为什么POST而不是GET?弹性搜索指南中的可比较例子说使用GET。

如果我用curl运行相同的请求:

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

它按预期工作,在头部插件中提供与POST请求相同的分数和文档。另外我刚检查过,带-XPOST的卷曲版本也可以使用。

1 个答案:

答案 0 :(得分:4)

使用谷歌浏览器开发人员工具,您可以看到执行的请求。如果您使用head插件并将POST的请求类型更改为GET,则json文档不会作为正文发送。 json文档附加到请求中。 elasticsearch不支持这一点。请求必须作为请求正文发送。使用curl你会把它作为一个身体发送。下面是执行请求的示例。

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

最后,elasticsearch将此查询视为与

相同

http://localhost:9200/gridshore/_search