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