匹配包含具備指定前綴的項(not analyzed)的字段的文檔。前綴查詢對應 Lucene 的 PrefixQuery 。html
案例 GET /_search { "query": { "prefix" : { "user" : { "value" : "ki", "boost" : 2.0 } } } }
regexp (正則表達式)查詢容許您使用正則表達式進行項查詢。有關支持的正則表達式語言的詳細信息,請參閱正則表達式語法。第一個句子中的 「項查詢」 意味着 Elasticsearch 會將正則表達式應用於由該字段生成的項,而不是字段的原始文本。正則表達式
注意: regexp (正則表達式)查詢的性能很大程度上取決於所選的正則表達式。匹配一切像 「.*」 ,是很是慢的,使用回顧正則表達式也是如此。若是可能,您應該嘗試在正則表達式開始以前使用長前綴。通配符匹配器 「.*?+」 將主要下降性能。elasticsearch
案例 GET /_search { "query": { "regexp":{ "name.first":{ "value":"s.*y", "boost":1.2 } } } }
匹配與通配符表達式具備匹配字段的文檔(not analyzed)。支持的通配符是 「*」,它匹配任何字符序列(包括空字符);還有 「?」,它匹配任何單個字符。請注意,此查詢可能很慢,由於它須要迭代多個項。爲了防止極慢的通配符查詢,通配符項不該以通配符 「*」 或 「?」 開頭。通配符查詢對應 Lucene 的 WildcardQuery 。ide
案例 GET /_search { "query": { "wildcard" : { "user" : { "value" : "ki*y", "boost" : 2.0 } } } }
###模糊查詢數據量越大效率越低,當查詢內容較多,數據量較大時建議將該字段設置成text進行分詞,而後經過match進行匹配。性能