elasticsearch(七)java 搜索功能Search Request的介绍与使用
目录
前端几节都是介绍的基于单个文档或着单个文档库的操作,
本节开始将介绍基于所有或指定的任何个数文档库的操作的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);
本节内容待续,敬请关注 ....
原文地址:https://blog.csdn.net/qq_2300688967/article/details/83902943
elasticsearch(七)java 搜索功能Search Request的介绍与使用的更多相关文章
- python-django框架中使用docker和elasticsearch配合实现搜索功能
注意:系统环境为Ubuntu18 一.docker安装 0:如果之前有安装过docker使用以下命令卸载: sudo apt-get remove docker docker-engine docke ...
- 【起航计划 032】2015 起航计划 Android APIDemo的魔鬼步伐 31 App->Search->Invoke Search 搜索功能 Search Dialog SearchView SearchRecentSuggestions
Search (搜索)是Android平台的一个核心功能之一,用户可以在手机搜索在线的或是本地的信息.Android平台为所有需要提供搜索或是查询功能的应用提 供了一个统一的Search Framew ...
- 第三百六十九节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现搜索功能
第三百六十九节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现搜索功能 Django实现搜索功能 1.在Django配置搜索结果页的路由映 ...
- 四十八 Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现搜索功能
Django实现搜索功能 1.在Django配置搜索结果页的路由映射 """pachong URL Configuration The `urlpatterns` lis ...
- django的前后的结合,search搜索功能案例
利用django的Q()功能可以很好的展开搜索功能 假设我要做个这样的搜索功能
- 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 ...
- 使用ElasticSearch服务从MySQL同步数据实现搜索即时提示与全文搜索功能
最近用了几天时间为公司项目集成了全文搜索引擎,项目初步目标是用于搜索框的即时提示.数据需要从MySQL中同步过来,因为数据不小,因此需要考虑初次同步后进行持续的增量同步.这里用到的开源服务就是Elas ...
- 「小程序JAVA实战」小程序搜索功能(55)
转自:https://idig8.com/2018/09/23/xiaochengxujavashizhanxiaochengxusousuogongneng54/ 通过用户搜索热销词,将热销词添加到 ...
- RxJava(七) 使用debounce操作符 优化app搜索功能
欢迎转载,转载请标明出处: http://blog.csdn.net/johnny901114/article/details/51555203 本文出自:[余志强的博客] 一.抛出问题 现在几乎所有 ...
随机推荐
- string字符串常量池在内存中的位置
这里仅仅是举个简单的样例说明字符串常量池在内存中的位置. 闲言少叙,直接上代码. <span style="font-size: large;">import java ...
- Cocos2d-x 3.0final 终结者系列教程02-开发环境的搭建
本文主要以Mac平台和XCode5为基本系统环境和C++编程工具来介绍Cocos2d-x3.0final版的安装. 一.系统准备(预计要花掉半个月工资) MacBook Pro一台(本人的比較老.11 ...
- 【SDOI 2008】 仪仗队
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=2190 [算法] 同POJ3090 值得注意的是此题数据规模较大,建议使用用线性筛筛出 ...
- B1260 [CQOI2007]涂色paint 区间dp
这个题和我一开始想的区别不是很大,但是要我独自做出来还是有一些难度. 每一次涂色 只有这两种可能: 1) 把一段未被 覆盖过的区间 涂成 * 色 2) 把一段被一种颜色覆盖的区间涂成 * 色 (并且 ...
- 记录,javascript中对象的属性名是字符串,却可以不用引号
问题描述:今日看书,里面介绍js的对象的属性名是包括空字符串在内的所以字符串 问题来了,我们平时定义的对象如下,是没有引号""or’'的 var someone = { f ...
- 基本的Mysql语句
操作文件夹(库) 增 create database db1 charset utf8; 查 # 查看当前创建的数据库 show create database db1; # 查看所有的数据库 sho ...
- SVO在ROS下的配置与运行
最近在做实验的时候,需要配置SVO,下面讲讲其中的过程以及遇到的问题: 首先说明配置环境:Ubuntu 14.04 + ROS indigo,ROS的安装我参考了ROS的官网上给出的教程:http:/ ...
- Hadoop MapReduce编程 API入门系列之网页流量版本1(二十一)
不多说,直接上代码. 对流量原始日志进行流量统计,将不同省份的用户统计结果输出到不同文件. 代码 package zhouls.bigdata.myMapReduce.areapartition; i ...
- Android-crop:漂亮的图片裁切工具
主要特点 Gradle构建和AAR 现代化的UI 向后兼容到SDK 10 配置简单 示例项目 使用 首先,在你的 manifest 文件中申明 CropImageActivity : <acti ...
- date 格式化
以这个为例: yyyy-MM-dd HH:mm:ss 首先得写好你需要的模板 options.sign = options.sign || 'yyyy-MM-dd HH:mm:ss'; 其次就可 ...