Elasticsearch學習筆記之—wildcard、fuzzy、regexp、prefix

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" } } }
相關文章
相關標籤/搜索