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/en/elasticsearch/client/java-rest/7.2/java-rest-high-search.html#java-rest-high-search

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

SpringBoot:elasticSearch 7.2.0 Java High Level REST Client 搜索 API的更多相关文章

  1. SpringBoot:Java High Level REST Client 搜索 API

    Springboot整合最新版elasticSearch参考之前的文章:SpingBoot:整合ElasticSearch 7.2.0 Search API SearchRequest用于与搜索文档, ...

  2. Java High Level REST Client 中文API(仅供参考)

    1.初始化 兼容性 Java High Level REST Client需要Java 1.8,并依赖于Elasticsearch核心项目,客户端版本与客户端开发的Elasticsearch版本相同, ...

  3. 使用Java High Level REST Client操作elasticsearch

    Java高级别REST客户端(The Java High Level REST Client)以后简称高级客户端,内部仍然是基于低级客户端.它提供了更多的API,接受请求对象作为参数并返回响应对象,由 ...

  4. 使用Java Low Level REST Client操作elasticsearch

    Java REST客户端有两种风格: Java低级别REST客户端(Java Low Level REST Client,以后都简称低级客户端算了,难得码字):Elasticsearch的官方low- ...

  5. Elasticsearch java api操作(二)(Java High Level Rest Client)

    一.说明: 一.Elasticsearch提供了两个JAVA REST Client版本: 1.java low level rest client: 低级别的rest客户端,通过http与集群交互, ...

  6. Elasticsearch java api操作(一)(Java Low Level Rest Client)

    一.说明: 一.Elasticsearch提供了两个JAVA REST Client版本: 1.java low level rest client: 低级别的rest客户端,通过http与集群交互, ...

  7. Java High Level REST Client 使用示例

    概述 ES 在 7.0 版本开始将废弃 TransportClient,8.0 版本开始将完全移除 TransportClient,取而代之的是 High Level REST Client,官方文档 ...

  8. 【ES】Java High Level REST Client 使用示例(增加修改)

    ES提供了多种编程语言的链接方式,有Java API,PHP API,.NET API 官网可以详细了解 https://www.elastic.co/guide/en/elasticsearch/c ...

  9. Java High Level REST Client 使用地理位置查询

    Java High Level REST Client 使用地理位置查询 一.需求 二.对应的query语句 三.对应java代码 1.引入 jar 包 2.创建 RestHighLevelClien ...

随机推荐

  1. 编码原理_base64编码原理

    1.1   Base64编码原理 1.1.1 概要: Base64是通讯传输中较为常见的编码方式之一. (注意是编码算法,而非加密算法) 参数传输的过程中会经常遇到的一种情况:使用英文不会涉及到乱码, ...

  2. 分布式Streaming Data Processing - Samza

    ​ 现在的主流的互联网应用越来越依赖streaming data来提供用户一些interesting statistics insights.以linkedin为例,最近90天有多少人看过你的link ...

  3. C#3.0新增功能06 对象和集合初始值设定项

    连载目录    [已更新最新开发文章,点击查看详细] 使用 C# 可以在单条语句中实例化对象或集合并执行成员分配. 对象初始值设定项 使用对象初始值设定项,你可以在创建对象时向对象的任何可访问字段或属 ...

  4. Windows下安装python2与python3以及分别对应的virtualenv

    第三次装python2与python3 除此之外还学会了如何在命令行复制代码1.单击右键2.菜单中选择标记3.按住左键选中需要复制的内容4.松开左键5.单击右键 全局中python版本为python2 ...

  5. JAVA-基础-数据类型转换

    一.类型的转换 java中数据具有类型.这些类型是可以相互进行转换的. 1.自动类型转换 六个和数字相关的基本类型,可以自动由小到大进行类型转换.但是反过来就不行. *注意,在整形自动转浮点型时,有可 ...

  6. darknet是如何对数据集做resize的?

    在准备数据集时,darknet并不要求我们预先对图片resize到固定的size. darknet自动帮我们做了图像的resize. darknet训练前处理 本文所指的darknet版本:https ...

  7. sql server 2008 外键的级联操作

    问题提出:现在我有三张表,学生Student,课程Course,成绩SC 1.  学生表Student,主键是学号Sno 2.  课程Course,主码是课程号Cno 3.  成绩SC,主码是Sno和 ...

  8. Linux内核实战(二)- 操作系统概览

    不知道你有没有产生过这些疑问: 桌面上的图标到底是啥?凭啥我在鼠标上一双击,就会出来一些不可描述的画面?都是从哪里跑出来的? 凭什么我在键盘上噼里啪啦地敲,某个位置就会显示我想要的那些字符? 电脑怎么 ...

  9. 优雅的对象转换解决方案-MapStruct使用进阶(二)

    在前面, 介绍了 MapStruct 及其入门. 本文则是进一步的进阶. 在 MapStruct 生成对应的实现类的时候, 有如下的几个情景. 1 属性名称相同,则进行转化 在实现类的时候, 如果属性 ...

  10. Scala基础语法学习(一)

    1. val和var的区别 val定义的是一个常量,无法改变其内容 scala> val s = 0 s: Int = 0 scala> s = 2 <console>:12: ...