目录

1,首先创建主搜索请求:

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


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

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

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

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

SearchRequest searchRequest = new SearchRequest(); 

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

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


  1. SearchRequest searchRequest = new SearchRequest("posts");
  2. searchRequest.types("doc");

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

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

或者这样设置:


  1. SearchRequest searchRequest = new SearchRequest();
  2. // 指定只能在哪些文档库中查询:可以添加多个且没有限制,中间用逗号隔开
  3. 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配置查询参数


  1. MatchQueryBuilder matchQueryBuilder = new MatchQueryBuilder("user", "kimchy");
  2. // 启动模糊查询
  3. matchQueryBuilder.fuzziness(Fuzziness.AUTO);
  4. // 在匹配查询上设置前缀长度选项
  5. matchQueryBuilder.prefixLength(3);
  6. // 设置最大扩展选项以控制查询的模糊过程
  7. matchQueryBuilder.maxExpansions(10);

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


  1. QueryBuilder matchQueryBuilder = QueryBuilders.matchQuery("user", "kimchy")
  2. .fuzziness(Fuzziness.AUTO)
  3. .prefixLength(3)
  4. .maxExpansions(10);
注:无论用于创建它的方法是什么,都必须将QueryBuilder对象添加到SearchSourceBuilder
searchSourceBuilder.query(matchQueryBuilder);

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


  1. sourceBuilder.from(0);
  2. sourceBuilder.size(5);

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

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

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

sourceBuilder.fetchSource(false);

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


  1. String[] includeFields = new String[] {"title", "user", "innerObject.*"};
  2. String[] excludeFields = new String[] {"_type"};
  3. sourceBuilder.fetchSource(includeFields, excludeFields);

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

原文地址:https://blog.csdn.net/qq_2300688967/article/details/83902943

elasticsearch(七)java 搜索功能Search Request的介绍与使用的更多相关文章

  1. python-django框架中使用docker和elasticsearch配合实现搜索功能

    注意:系统环境为Ubuntu18 一.docker安装 0:如果之前有安装过docker使用以下命令卸载: sudo apt-get remove docker docker-engine docke ...

  2. 【起航计划 032】2015 起航计划 Android APIDemo的魔鬼步伐 31 App->Search->Invoke Search 搜索功能 Search Dialog SearchView SearchRecentSuggestions

    Search (搜索)是Android平台的一个核心功能之一,用户可以在手机搜索在线的或是本地的信息.Android平台为所有需要提供搜索或是查询功能的应用提 供了一个统一的Search Framew ...

  3. 第三百六十九节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现搜索功能

    第三百六十九节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现搜索功能 Django实现搜索功能 1.在Django配置搜索结果页的路由映 ...

  4. 四十八 Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现搜索功能

    Django实现搜索功能 1.在Django配置搜索结果页的路由映射 """pachong URL Configuration The `urlpatterns` lis ...

  5. django的前后的结合,search搜索功能案例

    利用django的Q()功能可以很好的展开搜索功能 假设我要做个这样的搜索功能

  6. 011.Adding Search to an ASP.NET Core MVC app --【给程序添加搜索功能】

    Adding Search to an ASP.NET Core MVC app 给程序添加搜索功能 2017-3-7 7 分钟阅读时长 作者 本文内容 1.Adding Search by genr ...

  7. 使用ElasticSearch服务从MySQL同步数据实现搜索即时提示与全文搜索功能

    最近用了几天时间为公司项目集成了全文搜索引擎,项目初步目标是用于搜索框的即时提示.数据需要从MySQL中同步过来,因为数据不小,因此需要考虑初次同步后进行持续的增量同步.这里用到的开源服务就是Elas ...

  8. 「小程序JAVA实战」小程序搜索功能(55)

    转自:https://idig8.com/2018/09/23/xiaochengxujavashizhanxiaochengxusousuogongneng54/ 通过用户搜索热销词,将热销词添加到 ...

  9. RxJava(七) 使用debounce操作符 优化app搜索功能

    欢迎转载,转载请标明出处: http://blog.csdn.net/johnny901114/article/details/51555203 本文出自:[余志强的博客] 一.抛出问题 现在几乎所有 ...

随机推荐

  1. python清除数据库错误日志

    # coding=gbk from encodings import gbk  import re   import sys import  os import  pyodbc import trac ...

  2. F5设备控制脚本

    此脚本用于控制F5设备,可对pool成员进行操作及成员状态,该脚本及源自于f5官网 使用格式: 1.查看pool成员状态 /usr/bin/perl /scripts/togglepoolmember ...

  3. 怎样使用Eclipse PDT调试PHP程序

    本文主要介绍的是怎样用eclipse pdt调试PHP 代码. 1. 下载eclipse.从官网上找就能够了,并确认当前系统中有java环境,即jdk和jre. 2. 安装pdt了,採用的是在线安装. ...

  4. 使用RabbitMQ放置自己定义对象(不借助序列化工具,比如protobuffer)V2.0

    怎样使用RabbitMQ盛放自己定义的对象呢?一般都会使用序列化工具在投放之前转换一次.从MQ取回的时候再逆序列化还原为本地对象.这里使用C++自带的强制类型装换,将本地对象的内存模型当做自然的序列化 ...

  5. 点击TButton后的执行OnClick和OnMouseDown两个事件的过程(其实是通过WM_COMMAND执行程序员的代码)

    问题的来源:在李维的<深入浅出VCL>一书中提到了点击TButton会触发WM_COMMAND消息,正是它真正执行了程序员的代码.也许是我比较笨,没有理解他说的含义.但是后来经过追踪代码和 ...

  6. BZOJ 4262 线段树+期望

    思路: 把询问离线下来,查询max和查询min相似,现在只考虑查询max 令sum[l,r,x]表示l到r内的数为左端点,x为右端点的区间询问的答案 那么询问就是sun[l1,r1,r2]-sum[l ...

  7. C - Ilya and Sticks(贪心)

    Problem description In the evening, after the contest Ilya was bored, and he really felt like maximi ...

  8. 从Android源码分析View绘制

    在开发过程中,我们常常会来自定义View.它是用户交互组件的基本组成部分,负责展示图像和处理事件,通常被当做自定义组件的基类继承.那么今天就通过源码来仔细分析一下View是如何被创建以及在绘制过程中发 ...

  9. IE之css3效果兼容

    一.兼容css阴影效果(ie滤镜) 1.Shadow,阴影 .shadow { -moz-box-shadow: 3px 3px 4px #000; -webkit-box-shadow: 3px 3 ...

  10. Java基础4一数组

    数组 数组是用来存储一组相同类型数据的数据结构 数组变量属于引用数据类型 数组中的元素可以是任何数据类型(基本类型和引用类型) 备注:数组中存放的都是相同数据类型的数据. 1.一维数组的声明 语法:数 ...