SpringBootJava-High-Level-REST-Client-搜索-API

47次阅读

共计 1935 个字符,预计需要花费 5 分钟才能阅读完成。

SearchRequest 用于与搜索文档,聚合,建议有关的任何操作,还提供了在结果文档上请求突出显示的方法.

在最基本的形式中,我们可以向请求添加查询:

searchRequest = indexName==null?new SearchRequest():new SearchRequest(indexName);// 创建 SeachRequest . 没有参数,这将针对所有索引运行. SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();// 大多数搜索参数都添加到 SearchSourceBuilder . 它为搜索请求正文中的所有内容提供了 setter. searchSourceBuilder.query(QueryBuilders.matchAllQuery());// 将 match_all 查询添加到 SearchSourceBuilder . searchRequest.source(searchSourceBuilder);// 将 SearchSourceBuilder 添加到 SeachRequest . highLevelClient.search(searchRequest, RequestOptions.DEFAULT);Optional arguments
我们先来看一下 SearchRequest 一些可选参数:

SearchRequest searchRequest = new SearchRequest(“posts”); // 将请求限制为索引

还有一些其他有趣的可选参数:

searchRequest.routing(“routing”); // 设置路由参数

什么是 routing 参数?

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

shard = hash(routing) % number_of_primary_shards
routing 是一个可变值,默认是文档的 _id , 也可以设置成一个自定义的值
number_of_primary_shards 是主分片数量
所有的文档 API 都接受一个叫做 routing 的路由参数,通过这个参数我们可以自定义文档到分片的映射。一个自定义的路由参数可以用来确保所有相关的文档——例如所有属于同一个用户的文档——都被存储到同一个分片中。

searchRequest.indicesOptions(IndicesOptions.lenientExpandOpen()); // 设置 IndicesOptions 控制如何解析不可用的索引以及如何扩展通配符表达式 searchRequest.preference(“_local”); // 使用首选项参数例如执行搜索以优先选择本地分片. 默认是跨分片随机化.Using the SearchSourceBuilder
控制搜索行为的大多数选项都可以在 SearchSourceBuilder 上设置,SearchSourceBuilder 包含与 Rest API 的搜索请求主体中的选项相当或更少的选项.

以下是一些常见选项的几个示例:

SearchSourceBuilder sourceBuilder = new SearchSourceBuilder(); // 使用默认选项创建 SearchSourceBuilder QueryStringQueryBuilder queryStringQueryBuilder = QueryBuilders._queryStringQuery_(“ 关键词 ”);// 搜索关键字 sourceBuilder.query(QueryBuilders.termQuery(“user”, “kimchy”)); // 设置查询. 可以是任何类型的QueryBuilder sourceBuilder.from(0); // 设置确定结果索引的from 选项以开始搜索. 默认为 0. sourceBuilder.size(5); // 设置 size 选项,确定要返回的搜索命中数. 默认为 10. sourceBuilder.timeout(new TimeValue(60, TimeUnit.SECONDS)); // 设置一个可选的超时,控制允许搜索的时间.
在此之后,只需将 SearchSourceBuilder 添加到 SearchRequest:

SearchRequest searchRequest = new SearchRequest(); searchRequest.indices(“posts”); searchRequest.source(sourceBuilder);

正文完
 0

SpringBootJava-High-Level-REST-Client-搜索-API

47次阅读

共计 2146 个字符,预计需要花费 6 分钟才能阅读完成。

Springboot 整合最新版 elasticSearch 参考之前的文章:SpingBoot:整合 ElasticSearch 7.2.0

Search API

SearchRequest 用于与搜索文档,聚合,建议有关的任何操作,还提供了在结果文档上请求突出显示的方法.

在最基本的形式中,我们可以向请求添加查询:

 searchRequest = indexName==null?new SearchRequest():new SearchRequest(indexName);// 创建 SeachRequest . 没有参数,这将针对所有索引运行.
        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();// 大多数搜索参数都添加到 SearchSourceBuilder . 它为搜索请求正文中的所有内容提供了 setter.
        searchSourceBuilder.query(QueryBuilders.matchAllQuery());// 将 match_all 查询添加到 SearchSourceBuilder .
        searchRequest.source(searchSourceBuilder);// 将 SearchSourceBuilder 添加到 SeachRequest .
        highLevelClient.search(searchRequest, RequestOptions.DEFAULT);

Optional arguments

我们先来看一下 SearchRequest 一些可选参数:

SearchRequest searchRequest = new SearchRequest(“posts”); // 将请求限制为索引

还有一些其他有趣的可选参数:

searchRequest.routing(“routing”); // 设置路由参数

什么是 routing 参数?

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

shard = hash(routing) % number_of_primary_shards
  • routing 是一个可变值,默认是文档的 _id , 也可以设置成一个自定义的值
  • number_of_primary_shards 是主分片数量

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

searchRequest.indicesOptions(IndicesOptions.lenientExpandOpen()); // 设置 `IndicesOptions` 控制如何解析不可用的索引以及如何扩展通配符表达式 
searchRequest.preference("_local"); // 使用首选项参数例如执行搜索以优先选择本地分片. 默认是跨分片随机化. 

Using the SearchSourceBuilder

控制搜索行为的大多数选项都可以在 SearchSourceBuilder 上设置,SearchSourceBuilder包含与 Rest API 的搜索请求主体中的选项相当或更少的选项.

以下是一些常见选项的几个示例:

SearchSourceBuilder sourceBuilder = new SearchSourceBuilder(); // 使用默认选项创建 `SearchSourceBuilder`
QueryStringQueryBuilder queryStringQueryBuilder = QueryBuilders._queryStringQuery_("关键词");// 搜索关键字
sourceBuilder.query(QueryBuilders.termQuery("user", "kimchy")); // 设置查询. 可以是任何类型的 `QueryBuilder` 
sourceBuilder.from(0); // 设置确定结果索引的 `from` 选项以开始搜索. 默认为 0\. 
sourceBuilder.size(5); // 设置 `size` 选项,确定要返回的搜索命中数. 默认为 10\. 
sourceBuilder.timeout(new TimeValue(60, TimeUnit.SECONDS)); // 设置一个可选的超时,控制允许搜索的时间. 

在此之后,只需将 SearchSourceBuilder 添加到SearchRequest

SearchRequest searchRequest = new SearchRequest();
searchRequest.indices("posts");
searchRequest.source(sourceBuilder);

官方文档:https://www.elastic.co/guide/…

作者:onlooker
来源:三无青年博客
原文:https://www.35youth.cn/715.html
版权声明:本文为博主原创文章,转载请附上博文链接!

正文完
 0