java 调用es使用query语法对一个字段进行模糊匹配多个值比如名字里带 a或者c或者d的具体查询语句怎么写dsl的json字符串怎么拼接
您可以使用Bool Query结合Wildcard Query实现对一个字段进行模糊匹配多个值的查询。
以下是一个示例的Java代码,展示了如何使用Java High Level REST Client调用Elasticsearch进行模糊匹配查询:
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.index.query.WildcardQueryBuilder;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import java.io.IOException;
public class ElasticsearchQueryExample {
public static void main(String[] args) {
String[] values = {"a", "c", "d"};
try (RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder("localhost:9200"))) {
BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();
for (String value : values) {
WildcardQueryBuilder wildcardQuery = QueryBuilders.wildcardQuery("name", "*" + value + "*");
boolQuery.should(wildcardQuery);
}
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
sourceBuilder.query(boolQuery);
SearchRequest searchRequest = new SearchRequest("your_index");
searchRequest.source(sourceBuilder);
SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
// 处理搜索结果
} catch (IOException e) {
e.printStackTrace();
}
}
}
上述代码中,我们使用Bool Query的should子句来实现对多个Wildcard Query的逻辑OR操作,将查询"名字里带a或者c或者d"的文档。
希望对你有帮助
原文地址: https://www.cveoy.top/t/topic/hQaa 著作权归作者所有。请勿转载和采集!