当查询字符串包含斜杠时,URI搜索失败并显示parse_exception

时间:2016-11-04 03:44:51

标签: elasticsearch lucene

在查询字符串中包含斜杠时收到错误消息。

查询如下所示,

"query_string": {
         "query": "usr0\\/7\\/0\\/20",
           "default_field": "logmsg"
           "analyzer": "keyword"
   }

我的文档如下所示,

{
 "_index" : "logstash-log-2016.11.03",
   "_type" : "log",
  "_id" : "AVgpFuqyvHnB4OYqM9QE",
  "_score" : 2.2499034,
  "_source" : {
    "message" : "#<SNMP::SNMP_Trap:0x5383e289 @request_id=63766, @error_index=0, @error_status=0,  @value=#<SNMP::TimeTicks:0x3cbfc0fd @value=2033549672>>,blablabla>",
    "@timestamp" : "2016-11-03T07:28:37.177Z",
    "type" : "usrinfo",
    "logmsg" : "DISMAN-EVENT-MIB::sysUpTimeInstance:235 days, 08:44:56.72,SNMPv2-MIB::snmpTrapOID:IF-MIB::linkUp,IF-MIB::ifIndex.132:132,IF-MIB::ifDescr.132:usr0/7/0/20,IF-MIB::ifType.132:6,CISCO-IF-EXTENSION-MIB::cieIfStateChangeReason.132:up",
   "error_status" : "0",
}

我想获取logmsg具有关键字&#34; usr0 / 7/0/20&#34;的文档, 但没有点击返回

这发生在ES&#34;数字&#34; :&#34; 2.3.5&#34;,

1 个答案:

答案 0 :(得分:0)

反斜杠会转义正斜杠,但您还需要转义反斜杠本身,如下所示:

{
  "query": {
    "query_string": {
      "query": "user0\\/0\\/0\\/2",
      "default_field": "name"
    }
  }
}

但是,如果您的目标是在消息字段中搜索令牌user0/0/0/2,则无法使用此功能。您需要使用term查询或将"analyzer": "keyword"添加到query_string查询,否则user0/0/0/2将被标记为user002