Elasticsearch查詢之Term?Query示例解析
Term Query
Term Query是一種最基本的查詢方式,它用于在Elasticsearch中查詢一個字段中包含指定關(guān)鍵詞的文檔,與MySQL中的等值查詢類似。使用Term Query時,可以對字段進行完全匹配,且區(qū)分大小寫。
基本語法
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);
// 執(zhí)行查詢
SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
// TODO: 解析搜索結(jié)果
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查詢可配置的其他參數(shù)
Term Query還有其他的一些設(shè)置參數(shù),比如:
- boost參數(shù):可以為查詢結(jié)果設(shè)置權(quán)重,提高或降低查詢結(jié)果的得分,影響查詢結(jié)果的排名。
- case_insensitive參數(shù):設(shè)置是否對查詢進行大小寫不敏感的匹配。
- rewrite參數(shù):控制查詢的rewrite策略,主要用于控制查詢性能,緩存占用等方面。
- index參數(shù):控制是否在查詢時使用倒排索引,以及使用哪些倒排索引進行查詢。
總結(jié)
使用Term Query時需要注意以下幾點:
- 僅匹配完全匹配的關(guān)鍵字。
- 字段必須是不分詞的。
- 通常情況下,不需要將關(guān)鍵字轉(zhuǎn)換為小寫字母,因為Term Query不會將關(guān)鍵字轉(zhuǎn)換為小寫字母。
總之,Term Query非常適合用于對某個字段進行精確匹配的場景。如果您想進行模糊匹配或全文搜索,請考慮使用Match Query。
以上就是Elasticsearch查詢之Term Query示例解析的詳細內(nèi)容,更多關(guān)于Elasticsearch Term查詢的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
淺析java中ArrayList與Vector的區(qū)別以及HashMap與Hashtable的區(qū)別
以下是對java中ArrayList與Vector的區(qū)別以及HashMap與Hashtable的區(qū)別進行了詳細的解析。需要的朋友可以過來參考下2013-08-08
Java 使用keytool創(chuàng)建CA證書的操作
這篇文章主要介紹了Java 使用keytool創(chuàng)建CA證書的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01
SpringBoot創(chuàng)建并簡單使用的實現(xiàn)
這篇文章主要介紹了SpringBoot創(chuàng)建并簡單使用的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-10-10
SpringBoot搭建go-cqhttp機器人的方法實現(xiàn)
本文主要介紹了SpringBoot搭建go-cqhttp機器人的方法實現(xiàn)2021-12-12
SpringBoot在容器中創(chuàng)建實例@Component和@bean有什么區(qū)別
這篇文章主要介紹了SpringBoot在容器中創(chuàng)建實例@Component和@bean有什么區(qū)別,在Spring Boot中,@Component注解和@Bean注解都可以用于創(chuàng)建bean。它們的主要區(qū)別在于它們的作用范圍和創(chuàng)建方式2023-03-03
java后端返回數(shù)據(jù)給前端時去除值為空或NULL的屬性、忽略某些屬性代碼示例
在Java開發(fā)中我們處理JSON數(shù)據(jù)時經(jīng)常會遇到空值(null)的情況,這篇文章主要給大家介紹了關(guān)于java后端返回數(shù)據(jù)給前端時去除值為空或NULL的屬性、忽略某些屬性的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2024-07-07

