search() java_Elasticsearch Java Rest Client API 整理总结 (二) —— SearchAPI

引言

在上一篇 中主要介绍了 Document API,本节中讲解 search API

Search APIs

Java High Level REST Client 支持下面的 Search API:

Search API

Search Request

searchRequest 用来完成和搜索文档,聚合,建议等相关的任何操作同时也提供了各种方式来完成对查询结果的高亮操作。

最基本的查询操作如下

SearchRequest searchRequest = new SearchRequest();

SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();

searchSourceBuilder.query(QueryBuilders.matchAllQuery()); // 添加 match_all 查询

searchRequest.source(searchSourceBuilder); // 将 SearchSourceBuilder 添加到 SeachRequest 中

可选参数

SearchRequest searchRequest = new SearchRequest("posts"); // 设置搜索的 index

searchRequest.types("doc"); // 设置搜索的 type

除了配置 index 和 type 外,还有一些其他的可选参数

searchRequest.routing("routing"); // 设置 routing 参数

searchRequest.preference("_local"); // 配置搜索时偏爱使用本地分片,默认是使用随机分片

什么是 routing 参数?

当索引一个文档的时候,文档会被存储在一个主分片上。在存储时一般都会有多个主分片。Elasticsearch 如何知道一个文档应该放置在哪个分片呢?这个过程是根据下面的这个公式来决定的:

shard = hash(routing) % number_of_primary_shards

routing 是一个可变值,默认是文档的 _id ,也可以设置成一个自定义的值

number_of_primary_shards 是主分片数量

所有的文档 API 都接受一个叫做 routing 的路由参数,通过这个参数我们可以自定义文档到分片的映射。一个自定义的路由参数可以用来确保所有相关的文档——例如所有属于同一个用户的文档——都被存储到同一个分片中。

使用 SearchSourceBuilder

对搜索行为的配置可以使用 SearchSourceBuilder 来完成,来看一个实例

SearchSourceBuilder sourceBuilder = new SearchSourceBuilder(); // 默认配置

sourceBuilder.query(QueryBuilders.termQuery("user", "kimchy")); // 设置搜索,可以是任何类型的 QueryBuilder

sourceBuilder.from(0); // 起始 index

sourceBuilder.size(5); // 大小 size

sourceBuilder.timeout(new TimeValu

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值