目录

前端几节都是介绍的基于单个文档或着单个文档库的操作,

本节开始将介绍基于所有或指定的任何个数文档库的操作的api

SearchRequest用于与搜索文档、聚合、定制查询有关的任何操作,还提供了在查询结果的基于上,对于匹配的关键词进行突出显示的方法。

1,首先创建搜索请求对象:

SearchRequest searchRequest = new SearchRequest();

2,对搜索请求进行基本参数设置

1)设置查询指定的某个文档库:

SearchRequest searchRequest = new SearchRequest("posts");

searchRequest.types("doc");

2)查询多个文档库,其中多个文档库名之间用逗号隔开

SearchRequest searchRequest = new SearchRequest("posts2","posts", "posts2", "posts1");

或者这样设置:

SearchRequest searchRequest = new SearchRequest();

// 指定只能在哪些文档库中查询:可以添加多个且没有限制,中间用逗号隔开

searchRequest.indices("posts2","posts", "posts2", "posts1");

默认是去所有文档库中进行查询

3)指定查询的文档库中的文档类型:

searchRequest.types("doc1");

或多种类型,同样是文档类型之间用逗号隔开:

searchRequest.types("doc1", "doc1", "doc2");

4)设置指定查询的路由分片

searchRequest.routing("routing");

5)用preference方法去指定优先去某个分片上去查询(默认的是随机先去某个分片)

searchRequest.preference("_local");

6)向主搜索请求中可以添加搜索内容的特征参数

a.创建  搜索内容参数设置对象:SearchSourceBuilder

SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();

b. 将SearchSourceBuilder对象添加到搜索请求中:

searchRequest.source(searchSourceBuilder);

3,为搜索的文档内容对象SearchSourceBuilder设置参数:

大多控制搜索内容的行为参数都可以在SearchSourceBuilder上进行设置,SearchSourceBuilder包含与Rest API的搜索请求主体中类似的参数选项。 以下是一些常见选项的几个示例:

1)查询包含指定的内容:

a.查询所有的内容

searchSourceBuilder.query(QueryBuilders.matchAllQuery());

b.查询包含关键词字段的文档:如下,表示查询出来所有包含user字段且user字段包含kimchy值的文档

sourceBuilder.query(QueryBuilders.termQuery("user", "kimchy"));

c.上面是基于QueryBuilders查询选项的,另外还可以使用MatchQueryBuilder配置查询参数

MatchQueryBuilder matchQueryBuilder = new MatchQueryBuilder("user", "kimchy");

// 启动模糊查询

matchQueryBuilder.fuzziness(Fuzziness.AUTO);

// 在匹配查询上设置前缀长度选项

matchQueryBuilder.prefixLength(3);

// 设置最大扩展选项以控制查询的模糊过程

matchQueryBuilder.maxExpansions(10);

d.也可以使用QueryBuilders实用程序类创建QueryBuilder对象。此类提供了可用于使用流畅的编程样式创建QueryBuilder对象的辅助方法:

QueryBuilder matchQueryBuilder = QueryBuilders.matchQuery("user", "kimchy")

.fuzziness(Fuzziness.AUTO)

.prefixLength(3)

.maxExpansions(10);

注:无论用于创建它的方法是什么,都必须将QueryBuilder对象添加到SearchSourceBuilder

searchSourceBuilder.query(matchQueryBuilder);

3)设置查询的起始索引位置和数量:如下表示从第1条开始,共返回5条文档数据

sourceBuilder.from(0);

sourceBuilder.size(5);

4)设置查询请求的超时时间:如下表示60秒没得到返回结果时就认为请求已超时

sourceBuilder.timeout(new TimeValue(60, TimeUnit.SECONDS));

5)默认情况下,搜索请求会返回文档_source的内容,但与Rest API中的内容一样,您可以覆盖此行为。例如,您可以完全关闭_source检索:

sourceBuilder.fetchSource(false);

该方法还接受一个或多个通配符模式的数组,以控制以更精细的方式包含或排除哪些字段

String[] includeFields = new String[] {"title", "user", "innerObject.*"};

String[] excludeFields = new String[] {"_type"};

sourceBuilder.fetchSource(includeFields, excludeFields);

本节内容待续,敬请关注 ....

java search 不能使用方法_elasticsearch(七)java 搜索功能Search Request的介绍与使用...相关推荐

  1. php制作搜索框_搜索功能(search.php)模板制作 - WordPress模板开发

    搜索功能(search.php)模板制作 搜索功能是任何网站都必须的功能,通过搜索功能,用户可以快速的在我们的网站上找到自己需要的内容.在wordpress模板制作教程中,搜索功能也需要制作出来,这就 ...

  2. java中定义score方法_elasticsearch 自定义 script score JavaAPI查询详解

    一:自定义score的应用场景 先打个比方,比如新产品上架了,我想让最新上架的产品搜索时候,排在前面,怎么办呢?很简单按时间排序.嗯这种方法很好实现. 但下面又有个需求,比如我要求排序中上架时间的比重 ...

  3. java中日期比较方法_在java中进行日期时间比较的4种方法

    1. Date.compareTo() java.util.Date 提供了在 Java 中比较两个日期的经典方法compareTo(). 如果两个日期相等,则返回值为0. 如果Date在date参数 ...

  4. java ee 的使用方法_改善Java EE生产支持技能的8种方法

    java ee 的使用方法 参与Java EE生产支持的每个人都知道这项工作可能很困难. 7/24寻呼机支持,多个事件和错误修复(要定期处理),来自客户和管理团队的压力,要求它们尽快解决生产问题并防止 ...

  5. jfinal 普通java工程_JFinal getModel方法如何在java项目中使用

    JFinal getModel方法如何在java项目中使用 发布时间:2020-11-17 15:11:27 来源:亿速云 阅读:94 作者:Leah 今天就跟大家聊聊有关JFinal getMode ...

  6. java基础之main方法解读:java的主函数

    java基础之main方法解读: 一.深入理解main方法:(由java虚拟机调用) 解释main方法的形式:public static void main (String [] args){} 1. ...

  7. java 消除魔鬼数字方法_消除Java详细信息的简便方法

    存档日期:2019年5月14日 | 首次发布:2010年2月16日 Lombok是一个Java™实用程序,使您可以消除Java详细信息,特别是对于普通的旧Java对象(PO​​JO). 它通过使用注释 ...

  8. java search 不能使用方法_ElasticSearch实战系列三: ElasticSearch的JAVA API使用教程

    前言 在上一篇中介绍了ElasticSearch实战系列二: ElasticSearch的DSL语句使用教程---图文详解,本篇文章就来讲解下 ElasticSearch 6.x官方Java API的 ...

  9. java 中如何实现多进程_在Java中可以使用哪些方法来实现Java的多进程运行模式?...

    在Java中我们可以使用两种方法来实现这种要求.最简单的方法就是通过Runtime中的exec方法执行java classname.如果执行成功,这个方法返回一个Process对象,如果执行失败,将抛 ...

最新文章

  1. 三级火箭力助搜狗快速盈利
  2. 想要求职Web安全相关的岗位,你就必须要懂的知识
  3. cuda编程_CUDA编程入门(四)并行归约算法
  4. 开学季|计算机专业的你看过来!
  5. 帮你防沉迷、为你打call、解救路痴,一文看懂Google I/O 2018
  6. 算法:线性时间选择_机器学习必修课!scikit-learn 支持向量机算法库使用小结
  7. 利用VBS合并Excel中相同单元格
  8. 【代码笔记】iOS-竖状图
  9. .NET下的开发者们正在继承计算机早期时代伟大的黑客精神
  10. 2017CV技术报告:从3D物体重建到人体姿态估计
  11. windows自带黑体_微软黑体下载-微软黑体官方下载[字体下载]-华军软件园
  12. java重载父类方法_子类重载父类方法
  13. 没有财务系统如何对账?
  14. 【合金装备xp热门主题】
  15. 电子章怎么做(电子公章怎么生成),只要三步
  16. kali WiFi密码破解分享
  17. 360度全景的地拍如何制作?
  18. python中iadd与add_如何为Python属性实现-uyu iadd_uu
  19. CodeGear RAD 2007 SP4 最新下载及破解
  20. 部分html转成pdf,4个把HTML转成PDF的实现方案

热门文章

  1. python优先队列_python实现最大优先队列
  2. 学习率对神经网络的影响-乙烷,乙烯,乙炔的分子模型试验数据对比
  3. linux如何取文件列名,Linux_根据表名和索引获取需要的列名的存储过程,复制代码 代码如下: create proc p - phpStudy...
  4. 3.12 总结-深度学习第五课《序列模型》-Stanford吴恩达教授
  5. Linux中cp和scp命令的使用方法
  6. #ifdef ...#else...#endif等条件编译用法
  7. 谈谈基于机器学习的编程到底比传统编程强在哪里?
  8. 刷脸秒入仓,阿里云云盾实人认证助力心怡科技迎战双11
  9. 二十八、layui的日历组件使用
  10. Struts2配置文件【代码库】