2016-06-08 470 views
3

我無法在Elasticsearch中進行搜索,搜索字符以特殊字符結尾/以特殊字符開頭。像「123456!」用elasticsearch中的特殊字符搜索

{ 
"query": { 
    "query_string": { 
     "default_field": "password", 
     "query": "123456!" 
    } 
} 
} 

我的映射是

{ 
    "mappings": { 
    "passwords": { 
     "properties": { 
     "date": { "type": "date"}, 
     "password": { "type": "string","index": "not_analyzed"}, 

     } 
    } 
    } 
} 

這是給我的錯誤,我能在我的搜索查詢做(或映射),這樣的特殊字符將被視爲搜索字符串的一部分?

回答

6

由於您passwordnot_analyzed(好!),嘗試用雙引號周圍123456!做一個精確匹配:

{ 
"query": { 
    "query_string": { 
     "default_field": "password", 
     "query": "\"123456!\"" 
    } 
} 
} 

這樣做的另一種方式是設置keyword分析儀在query_string查詢(但一定要逃脫!,因爲它是reserved character(對於NOT運營商)

{ 
"query": { 
    "query_string": { 
     "default_field": "password", 
     "query": "123456\!", 
     "analyzer": "keyword" 
    } 
} 
}