在Elasticsearch中,QueryBuilders提供了一系列静态方法来构建不同类型的查询。以下是一些常用的查询构建方法及其简单示例:
matchQuery:用于全文匹配查询。
QueryBuilders.matchQuery("fieldname", "text");
multiMatchQuery:用于在多个字段上执行全文匹配查询。
QueryBuilders.multiMatchQuery("text", "fieldname1", "fieldname2");
termQuery:用于匹配特定字段上的精确值。
QueryBuilders.termQuery("fieldname", "value");
termsQuery:用于匹配特定字段上的多个精确值。
QueryBuilders.termsQuery("fieldname", "value1", "value2");
rangeQuery:用于匹配特定范围内的值。
QueryBuilders.rangeQuery("fieldname").gte("value1").lte("value2");
existsQuery:用于查询含有指定字段的文档。
QueryBuilders.existsQuery("fieldname");
prefixQuery:用于匹配特定前缀的字段值。
QueryBuilders.prefixQuery("fieldname", "prefix");
wildcardQuery:用于使用通配符匹配字段值。
QueryBuilders.wildcardQuery("fieldname", "wild*card");
constantScoreQuery:用于执行过滤器查询,并给所有匹配的文档分配一个常量分数。
QueryBuilders.constantScoreQuery(QueryBuilders.termQuery("fieldname", "value"));
functionScoreQuery:用于执行复杂的分数计算,可以结合多种函数。
FunctionScoreQueryBuilder.filter(QueryBuilders.termQuery("fieldname", "value")).add(new WeightBuilder().setWeight(2));
这些方法可以用来构建复杂查询,并与Elasticsearch Java API一起使用,执行搜索请求。