Query中的withQuery在7.x版本之后不再使用NativeQueryBuilder构建查询,而是改用SearchSourceBuilder

在 Elasticsearch 7.x 版本及之后,withQuery 方法的用法和 API 发生了一些变化,尤其是在 Java 客户端的使用上。具体来说,以下是主要的变化:

1. SearchSourceBuilder 的使用

在 Elasticsearch 7.x 版本中,通常使用 SearchSourceBuilder 来构建查询,而不是像之前那样直接使用 NativeQueryBuilder(该类主要用于低级 API)。SearchSourceBuilder 提供了更丰富和灵活的 API 来构建复杂的查询请求。

2. QueryBuilders 的变化

QueryBuilders 类中的方法和查询构造方式在 7.x 版本中保持一致,但其配套使用的构建类有所变化。你需要使用 SearchSourceBuilder 来设置查询条件。

3. 示例代码(适用于 Elasticsearch 7.x)

在 Elasticsearch 7.x 版本中,你通常会使用 SearchSourceBuilder 来构建查询请求。例如,以下是一个将 multiMatchQuerySearchSourceBuilder 结合使用的示例:

import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.elasticsearch.search.sort.SortOrder;
import org.elasticsearch.search.highlight.HighlightBuilder;

SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder()
    .query(QueryBuilders.multiMatchQuery("互联网寒冬", "title", "content"))
    .sort("type", SortOrder.DESC)
    .sort("score", SortOrder.DESC)
    .sort("createTime", SortOrder.DESC)
    .from(0)
    .size(10)
    .highlighter(new HighlightBuilder()
        .field(new HighlightBuilder.Field("title").preTags("<em>").postTags("</em>"))
        .field(new HighlightBuilder.Field("content").preTags("<em>").postTags("</em>"))
    );

4. 构建请求

在构建查询请求时,你将使用 SearchRequestSearchSourceBuilder 来设置查询条件,然后提交请求:

import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.RestHighLevelClient;

SearchRequest searchRequest = new SearchRequest("your_index_name");
searchRequest.source(searchSourceBuilder);

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

5. SearchSourceBuilder 的功能

  • query:设置查询条件。
  • sort:设置排序方式。
  • fromsize:设置分页。
  • highlighter:设置高亮显示。

总结

在 Elasticsearch 7.x 版本中,推荐使用 SearchSourceBuilder 类来构建查询请求,而 NativeQueryBuilder 主要用于旧版或低级 API。SearchSourceBuilder 提供了更全面的查询构建功能,可以方便地组合查询、排序、分页和高亮显示等功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值