SearchRequest用于与搜索文档、聚合、定制查询有关的任何操作
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);
本节内容待续,敬请关注 ...
————————————————
版权声明:本文为CSDN博主「未名who」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_2300688967/article/details/83902943
SearchRequest用于与搜索文档、聚合、定制查询有关的任何操作的更多相关文章
- bs4--官文--搜索文档树
搜索文档树 Beautiful Soup定义了很多搜索方法,这里着重介绍2个: find() 和 find_all() .其它方法的参数和用法类似,请读者举一反三. 再以“爱丽丝”文档作为例子: ht ...
- 【Lucene3.6.2入门系列】第14节_SolrJ操作索引和搜索文档以及整合中文分词
package com.jadyer.solrj; import java.util.ArrayList; import java.util.List; import org.apache.solr. ...
- es之java搜索文档
1:搜索文档数据(单个索引) @Test public void getSingleDocument(){ GetResponse response = client.prepareGet(" ...
- [工具推荐]制作基于Dash的本地文档方便搜索文档api和内容
[版权声明]:本文章由danvid发布于http://danvid.cnblogs.com/,如需转载或部分使用请注明出处 最近在看es的文档,发现查起api来真的很麻烦,很多现在开源的文档都没有查询 ...
- 使用requests爬取梨视频、bilibili视频、汽车之家,bs4遍历文档树、搜索文档树,css选择器
今日内容概要 使用requests爬取梨视频 requests+bs4爬取汽车之家 bs4遍历文档树 bs4搜索文档树 css选择器 内容详细 1.使用requests爬取梨视频 # 模拟发送http ...
- jQuery---jq操作标签文本(html(),text()),jq操作文档标签(插入,删除,修改),克隆,,jq操作属性,jq操作class属性,jq操作表单value,jq操作css,jq操作盒子(重要),jq操作滚动条
jQuery---jq操作标签文本(html(),text()),jq操作文档标签(插入,删除,修改),克隆,,jq操作属性,jq操作class属性,jq操作表单value,jq操作css,jq操作盒 ...
- Python爬虫系列(六):搜索文档树
今天早上,写的东西掉了.这个烂知乎,有bug,说了自动保存草稿,其实并没有保存.无语 今晚,我们将继续讨论如何分析html文档. 1.字符串 #直接找元素soup.find_all('b') 2.正则 ...
- MongoDB中的映射,限制记录和记录拼排序 文档的插入查询更新删除操作
映射 在 MongoDB 中,映射(Projection)指的是只选择文档中的必要数据,而非全部数据.如果文档有 5 个字段,而你只需要显示 3 个,则只需选择 3 个字段即可. find() 方法 ...
- Linux之文档与目录结构 目录的相关操作 Linux的文件系统
Linux之文档与目录结构 Linux文件系统结构 Linux目录结构的组织形式和Windows有很大的不同.首先Linux没有“盘(C盘.D盘.E盘)”的概念.已经建立文件系统的硬盘分区被挂载到 ...
随机推荐
- STL关联容器总结
有序的都不带unordered,即如下: set multiset map multimap 其中带multi的表示关键字可以重复 无序的带unordered,如下: unordered_map un ...
- RegExp-named captured groups(命名分组捕获)
console.log('2020-01-23'.match(/(\d{4})-(\d{2})-(\d{2})/)) const t = '2020-01-23'.match(/(?<year& ...
- 线性递推BM模板
#include <cstdio> #include<iostream> #include <cstring> #include <cmath> #in ...
- 线性筛-mobius,强大O(n)
首先,你要知道什么是莫比乌斯函数 然后,你要知道什么是积性函数 最后,你最好知道什么是线性筛 莫比乌斯反演 积性函数 线性筛,见上一篇 知道了,就可以愉快的写mobius函数了 由定义: μ(n)= ...
- wampserver 配置的几个坑(雾
1. 从安装版本说起 自从我进入大学之后,便继承了学长那里的wampserver2.5版本 直到有一天自己下载wamp的时候才注意到已经有 3.0.6版本了 (现在有更高的了 但是3.0.6够用了) ...
- 吴裕雄 python 机器学习——数据预处理过滤式特征选取SelectPercentile模型
from sklearn.feature_selection import SelectPercentile,f_classif #数据预处理过滤式特征选取SelectPercentile模型 def ...
- mybatis--实现数据库增删改查
首先,创建一个数据库my,并在数据库中插入一张表user,然后在user表中插入一行数据,代码如下: create database my; use my; create table user( id ...
- RAID 0实验:mdadm
*独立冗余磁盘阵列---RAID0* RAID0: 把多块物理硬盘设备(至少两块)通过硬件或软件的方式串联在一起, 组成 一个大的卷组,并将数据依次写入到各个物理硬盘中.任意一块 硬盘发生故障将导致整 ...
- 中国科技股赴美IPO的游戏结束了吗?
编辑 | 于斌 出品 | 于见(mpyujian) 有关斗鱼直播的消息,一直层出不求.最近前几天又有捷报传出,斗鱼走出国门,在美国上市,开始了自己的新征程. 但据悉,斗鱼国际控股有限公司可能刚刚达到外 ...
- 使用Canvas画布的注意事项
1.开始一个路径时要使用beiginPath()方法 ,不然会发生意想不到的事件. 2.图片加载完成后才能按照顺序依次绘图 (巧用onload时间)