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

时间:2019-12-31 06:44:48

标签: elasticsearch

我正在使用es 6.8。

我创建了一个索引:

put /q1
 {
    "mappings": {
        "my_type": {
            "properties": {
                "name" : {"type" : "text"},
                "last" : {"type": "text"},
                "age" : {"type": "integer"}
            }
        }
    }
 }

并放入一些数据:

post /q1/my_type
 {

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

 }

当我尝试搜索时:

get /q1/_search
{
    "query" : {
        "term" : { "name" : "miki" }
    }
}

我遇到错误:

"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

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

1 个答案:

答案 0 :(得分:1)

将错误的GET参数发送到服务器时,可能会发生此错误。假设您使用的是elasticvue firefox插件,并且使用的是查询标签:

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

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

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