gpt4 book ai didi

java - 如何通过Java高级Rest客户端在Elastic Search中使用多个字段进行搜索

转载 作者:行者123 更新时间:2023-12-02 23:08:48 29 4
gpt4 key购买 nike

我是Elastic Search的新手。成功实现了用于匹配单个字段的搜索文档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中应用所有这些过滤器?

最佳答案

您可以使用docs中指定的rangeQuery:

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

对于模式,可以使用wildcardQuery:
wildcardQuery(
"documentName",
patternString);

从文档中:
查找文档,其中指定的字段包含与指定的模式匹配的术语,其中的模式支持单字符通配符(?)和多字符通配符(*)

要在单个查询中应用多个过滤器,请参阅 this答案。

关于java - 如何通过Java高级Rest客户端在Elastic Search中使用多个字段进行搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62444564/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com