以dash开头的查询值会导致elasticsearch count api失败

时间:2014-06-04 22:46:28

标签: elasticsearch

这有效:

GET /box/item/_count?q=name%3Aabcdef

这不是:

GET /box/item/_count?q=name%3A-abcdef

(差异是破折号)

来自elasticsearch的回复是:“无法解析'名称:-abcdeft'”

框/项目未被分析。

怎么办?

1 个答案:

答案 0 :(得分:3)

使用反斜杠转义它对我有用:

GET /box/item/_count?q=name%3A\-abcdef

使用引号也是如此:

GET /box/item/_count?q=name%3A"-abcdef"

连字符是一个特殊字符,像其他人一样需要转义:

  

保留字符

     

如果您需要使用任何充当运算符的字符   在您的查询本身(而不是作为运算符),那么你应该逃避   他们有一个领先的反斜杠。例如,要搜索(1 + 1)= 2,   您需要将查询编写为\(1 \ +1 \)= 2。

     

保留字符为:+ - && || ! (){} [] ^“〜*?:\ /

     

未能正确转义这些特殊字符可能导致a   语法错误,阻止您的查询运行。