簡體   English   中英

如何通過 Java 高級 rest 客戶端在 Elastic Search 中使用多個字段進行搜索

[英]How to search using multiple fields in Elastic Search through Java high level rest client

我是彈性搜索的新手。 成功實現搜索文檔 API 匹配單個字段,如下所示:

SearchRequest searchRequest = new SearchRequest(indexName);

//Single field match, only for documentId
QueryBuilder matchQueryBuilder = QueryBuilders.matchQuery("documentId", documentId); 

SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
sourceBuilder.query(matchQueryBuilder);
searchRequest.source(sourceBuilder);

SearchResponse searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);

我想使用單個 API 中的多個字段過濾數據,例如,需要根據以下條件在 API 上方添加更多過濾器:

documentNumber > 66 &&  (documentCreatedDate >= date1 && documentCreatedDate <= date2) && documentName like "%test%"

誰能幫助如何在單個 SearchRequest 中應用所有這些過濾器?

您可以使用文檔中指定的rangeQuery

QueryBuilders.rangeQuery("documentNumber")                                             
    .gte(66); 
QueryBuilders.rangeQuery("documentCreatedDate")                                             
    .gte(date1)
    .lt(date2); 

對於模式,您可以使用 wildcardQuery:

wildcardQuery(
        "documentName",                                              
        patternString); 

從文檔:
查找指定字段包含與指定模式匹配的術語的文檔,其中模式支持單字符通配符 (?) 和多字符通配符 (*)

要在單個查詢中應用多個過濾器,請參閱答案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM