这是我的JSON。

{
    "id":100,
    "name":"xxx",
    "hobbies":["cricket","footbal","singing & dancing"]

}

我需要从“其他”过滤“唱歌和跳舞”字符串。在下面的查询中执行。
http://localhost:9200/employeed/data/_search?q={"query":{"query_string":{"query" : "hobbies:Singing & dancing"}}}

我在异常(exception)之下。
"type": "illegal_argument_exception",
  "reason": "request [employee/data/_search] contains unrecognized parameter: [ Singing\"}}}]"

有什么帮助吗?

最佳答案

您正在尝试通过URI发送DSL查询。两者不要混用,请参见此处:https://www.elastic.co/guide/en/elasticsearch/reference/6.2/search-search.html



您可以使用DSL并将其发送到请求正文中,也可以更改URL以仅包括要使用的兴趣爱好query_string。像这样:

http://localhost:9200/employeed/data/_search?q=hobbies%3A%5C%22Singing%20%26%20dancing%5C%22

query_string部分也是URL编码的。我还在您的搜索值周围添加了引号,否则将对它们进行“或”运算。未编码的版本:
hobbies:\"Singing & dancing\"

10-04 19:16