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


WildCard

GET /people/_search
{
  "query":{
    "wildcard":{
      "firstName":"japa*"
    }
  }
}

上面的可以使用問號和星號兩個形式的查詢,下面是解釋:

?, which matches any single character   匹配任意個字符

*, which can match zero or more characters, including an empty one,翻譯:可以匹配0個或多個字符,包含空字符

 

 Fuzzy

GET /people/_search
{
  "query":{
    "fuzzy":{
      "firstName":"japen"
    }
  }
}
japen可以匹配到japan,即使有一個字符不一樣,也可以匹配出來

Regexp

假設您只想匹配以W開頭,緊跟着數字的郵政編碼。使用regexp查詢能夠讓你寫下更復雜的模式:備注:這個正則最好是用到不分詞的字段里,如果做過分詞以后就只能對分詞后的詞組或詞進行搜索,意義就不大了。

GET /my_index/address/_search
{
    "query": {
        "regexp": {
            "postcode": "W[0-9].+"
        }
    }
}

GET /person_index/_search
{
  "query":{
    "regexp":{
      "postCode":
      {
        "value":"W.*"
      }
    }
  }
}

 匹配手機號:

GET /person_index/_search
{
  "query":{
    "regexp":{
      "address":
      {
        "value":"1[35678][0-9]{9}"
      }
    }
  }
}

 

這個正則表達式的規定了詞條需要以W開頭,緊跟着一個0到9的數字,然后是一個或者多個其它字符。

下面例子是所有以 wxopen 開頭的正則

{
  "query": {
    "regexp": {
      "hostname": "wxopen.*"
    }
  }
}

 

prefix

以什么字符開頭的,可以更簡單地用 prefix,如下面的例子

GET /_search { "query": { "prefix": { "user": { "value": "ki" } } } }

或者
GET /_search { "query": { "prefix" : { "user" : "ki" } } }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM