为什么我收到无法识别的参数:[查询]

use*_*129 1 elasticsearch

我正在使用 es 6.8 和 elasticvue(作为 firefox 插件)

我创建了一个索引:

put /q1
 {
    "mappings": {
        "my_type": {
            "properties": {
                "name" : {"type" : "text"},
                "last" : {"type": "text"},
                "age" : {"type": "integer"}
            }
        }
    }
 }
Run Code Online (Sandbox Code Playgroud)

并放一些数据:

post /q1/my_type
 {

        "name" : "miki",
        "last" : "elk",
        "age" : "35"

 }
Run Code Online (Sandbox Code Playgroud)

当我尝试搜索时:

get /q1/_search
{
    "query" : {
        "term" : { "name" : "miki" }
    }
}
Run Code Online (Sandbox Code Playgroud)

我收到错误:

"error": {
    "root_cause": [
        {
            "type": "illegal_argument_exception",
            "reason": "request [/q1/_search] contains unrecognized parameter: [query]"
        }
    ],
    "type": "illegal_argument_exception",
    "reason": "request [/q1/_search] contains unrecognized parameter: [query]"
},
"status": 400
Run Code Online (Sandbox Code Playgroud)

出了什么问题,我该如何解决?

maa*_*jou 5

当错误的 GET 参数发送到服务器时,可能会发生此错误。假设您正在使用elasticvuefirefox 插件,并且您正在使用查询选项卡:

您可以将 GET 方法更改为 POST 方法,它应该可以正常工作。elasticvue在这里使用 GET 方法似乎有一些问题。查看 firefox 中的开发者网络工具,请求将发送到以下 URL:

http://localhost:9200/q1/_search?query=%5Bobject%20Object%5D

这显然是错误的,它将您的查询作为名为 query 的 GET 参数发送!没有这样的 GET 参数,它应该将查询作为请求的主体而不是它的参数发送。使用 POST 是一种替代方法,Elasticsearch API 允许使用它。您也可以将 kibana 用作官方的强大工具。