0

我有一个类似的问题在 这里问

我在头插件中运行以下查询,任何请求选项卡(带有_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"
 }}}'

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

4

1 回答 1

4

使用 google chrome 开发人员工具,您可以看到执行的请求。如果使用 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

于 2015-02-07T13:33:07.580 回答