Elasticsearch查詢(xún)之Term?Query示例解析
Term Query
Term Query是一種最基本的查詢(xún)方式,它用于在Elasticsearch中查詢(xún)一個(gè)字段中包含指定關(guān)鍵詞的文檔,與MySQL中的等值查詢(xún)類(lèi)似。使用Term Query時(shí),可以對(duì)字段進(jìn)行完全匹配,且區(qū)分大小寫(xiě)。
基本語(yǔ)法
GET /{index}/_search { "query": { "term": { "{field}": "{value}" } } }
其中,{index}表示查詢(xún)的索引名稱(chēng),{field}表示需要查詢(xún)的字段,{value}表示需要匹配的值。
Java代碼寫(xiě)法
// TODO 省略導(dǎo)入包 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 相當(dāng)于 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); // 執(zhí)行查詢(xún) SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT); // TODO: 解析搜索結(jié)果 client.close(); } }
Terms-匹配多個(gè)值
term查詢(xún)只能用于匹配該屬性的單個(gè)值,若想匹配多個(gè)值,可以用terms查詢(xún)
基本語(yǔ)法
GET /{index}/_search { "query": { "terms": { "{field}": [ "{value1}", "{value2}", "{value3}" ] } } }
Java寫(xiě)法
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查詢(xún)可配置的其他參數(shù)
Term Query還有其他的一些設(shè)置參數(shù),比如:
- boost參數(shù):可以為查詢(xún)結(jié)果設(shè)置權(quán)重,提高或降低查詢(xún)結(jié)果的得分,影響查詢(xún)結(jié)果的排名。
- case_insensitive參數(shù):設(shè)置是否對(duì)查詢(xún)進(jìn)行大小寫(xiě)不敏感的匹配。
- rewrite參數(shù):控制查詢(xún)的rewrite策略,主要用于控制查詢(xún)性能,緩存占用等方面。
- index參數(shù):控制是否在查詢(xún)時(shí)使用倒排索引,以及使用哪些倒排索引進(jìn)行查詢(xún)。
總結(jié)
使用Term Query時(shí)需要注意以下幾點(diǎn):
- 僅匹配完全匹配的關(guān)鍵字。
- 字段必須是不分詞的。
- 通常情況下,不需要將關(guān)鍵字轉(zhuǎn)換為小寫(xiě)字母,因?yàn)門(mén)erm Query不會(huì)將關(guān)鍵字轉(zhuǎn)換為小寫(xiě)字母。
總之,Term Query非常適合用于對(duì)某個(gè)字段進(jìn)行精確匹配的場(chǎng)景。如果您想進(jìn)行模糊匹配或全文搜索,請(qǐng)考慮使用Match Query。
以上就是Elasticsearch查詢(xún)之Term Query示例解析的詳細(xì)內(nèi)容,更多關(guān)于Elasticsearch Term查詢(xún)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
mybatis映射文件操作存儲(chǔ)過(guò)程的實(shí)現(xiàn)
本文主要介紹了mybatis映射文件操作存儲(chǔ)過(guò)程的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03Java Servlet簡(jiǎn)單實(shí)例分享(文件上傳下載demo)
下面小編就為大家?guī)?lái)一篇Java Servlet簡(jiǎn)單實(shí)例分享(文件上傳下載demo)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-05-05詳解SpringBoot中異步請(qǐng)求的實(shí)現(xiàn)與并行執(zhí)行
這篇文章主要為大家詳細(xì)介紹了在SpringBoot中如何是實(shí)現(xiàn)異步請(qǐng)求、并行執(zhí)行,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-02-02關(guān)于springboot2整合lettuce啟動(dòng)卡住問(wèn)題的解決方法
Lettuce和Jedis的都是連接Redis Server的客戶(hù)端程序,下面這篇文章主要給大家介紹了關(guān)于springboot2整合lettuce啟動(dòng)卡住問(wèn)題的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2021-12-12詳解Spring Cloud Finchley版中Consul多實(shí)例注冊(cè)的問(wèn)題處理
這篇文章主要介紹了詳解Spring Cloud Finchley版中Consul多實(shí)例注冊(cè)的問(wèn)題處理,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-08-08SpringAOP實(shí)現(xiàn)自定義接口權(quán)限控制
本文主要介紹了SpringAOP實(shí)現(xiàn)自定義接口權(quán)限控制,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-11-11springboot @WebFilter注解過(guò)濾器的實(shí)現(xiàn)
這篇文章主要介紹了springboot @WebFilter注解過(guò)濾器的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03