WildCard正則表達式
GET /people/_search { "query":{ "wildcard":{ "firstName":"japa*" } } }
上面的能夠使用問號和星號兩個形式的查詢,下面是解釋:post
?
, which matches any single character 匹配任意個字符編碼
*
, which can match zero or more characters, including an empty one,翻譯:能夠匹配0個或多個字符,包含空字符spa
Fuzzy翻譯
GET /people/_search { "query":{ "fuzzy":{ "firstName":"japen" } } }
japen能夠匹配到japan,即便有一個字符不同,也能夠匹配出來
Regexpcode
假設您只想匹配以W開頭,緊跟着數字的郵政編碼。使用regexp查詢可以讓你寫下更復雜的模式:備註:這個正則最好是用到不分詞的字段裏,若是作過度詞之後就只能對分詞後的詞組或詞進行搜索,意義就不大了。regexp
GET /my_index/address/_search { "query": { "regexp": { "postcode": "W[0-9].+" } } }
GET /person_index/_search { "query":{ "regexp":{ "postCode": { "value":"W.*" } } } }
匹配手機號:blog
GET /person_index/_search { "query":{ "regexp":{ "address": { "value":"1[35678][0-9]{9}" } } } }
這個正則表達式的規定了詞條須要以W開頭,緊跟着一個0到9的數字,而後是一個或者多個其它字符。it
下面例子是全部以 wxopen 開頭的正則console
{ "query": { "regexp": { "hostname": "wxopen.*" } } }
prefix
以什麼字符開頭的,能夠更簡單地用 prefix,以下面的例子
GET /_search { "query": { "prefix": { "user": { "value": "ki" } } } }
或者
GET /_search { "query": { "prefix" : { "user" : "ki" } } }