Elasticsearch查詢之Term Query示例解析
Term Query
Term Query是一種最基本的查詢方式,它用於在Elasticsearch中查詢一個字段中包含指定關鍵詞的文檔,與MySQL中的等值查詢類似。使用Term Query時,可以對字段進行完全匹配,且區分大小寫。
基本語法
GET /{index}/_search { "query": { "term": { "{field}": "{value}" } } }
其中,{index}表示查詢的索引名稱,{field}表示需要查詢的字段,{value}表示需要匹配的值。
Java代碼寫法
// TODO 省略導入包 import java.io.IOException; public class TermQueryExample { public static void main(String[] args) throws IOException { RestHighLevelClient client = new RestHighLevelClient( RestClient.builder( new HttpHost("localhost", 9200, "http"))); SearchRequest searchRequest = new SearchRequest("my_index"); // 這裡的searchSourceBuilder 相當於 query:{} SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); // query:{term:{"field_name":"field_value"}} searchSourceBuilder.query(QueryBuilders.termQuery("field_name", "field_value")); searchSourceBuilder.timeout(new TimeValue(60, TimeUnit.SECONDS)); searchRequest.source(searchSourceBuilder); // 執行查詢 SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT); // TODO: 解析搜索結果 client.close(); } }
Terms-匹配多個值
term查詢隻能用於匹配該屬性的單個值,若想匹配多個值,可以用terms查詢
基本語法
GET /{index}/_search { "query": { "terms": { "{field}": [ "{value1}", "{value2}", "{value3}" ] } } }
Java寫法
SearchRequest searchRequest = new SearchRequest("index"); SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); // 註意這裡是使用termsQuery("field",value1,value2) TermsQueryBuilder termsQueryBuilder = QueryBuilders.termsQuery("field", "value1", "value2", "value3"); searchSourceBuilder.query(termsQueryBuilder); searchRequest.source(searchSourceBuilder); SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
Term查詢可配置的其他參數
Term Query還有其他的一些設置參數,比如:
- boost參數:可以為查詢結果設置權重,提高或降低查詢結果的得分,影響查詢結果的排名。
- case_insensitive參數:設置是否對查詢進行大小寫不敏感的匹配。
- rewrite參數:控制查詢的rewrite策略,主要用於控制查詢性能,緩存占用等方面。
- index參數:控制是否在查詢時使用倒排索引,以及使用哪些倒排索引進行查詢。
總結
使用Term Query時需要註意以下幾點:
- 僅匹配完全匹配的關鍵字。
- 字段必須是不分詞的。
- 通常情況下,不需要將關鍵字轉換為小寫字母,因為Term Query不會將關鍵字轉換為小寫字母。
總之,Term Query非常適合用於對某個字段進行精確匹配的場景。如果您想進行模糊匹配或全文搜索,請考慮使用Match Query。
以上就是Elasticsearch查詢之Term Query示例解析的詳細內容,更多關於Elasticsearch Term查詢的資料請關註WalkonNet其它相關文章!
推薦閱讀:
- elasticsearch bucket 之rare terms聚合使用詳解
- Java elasticSearch-api的具體操作步驟講解
- springboot中使用ElasticSearch的詳細教程
- SpringBoot框架集成ElasticSearch實現過程示例詳解
- springboot2+es7使用RestHighLevelClient的示例代碼