elasticsearch(七)java 搜索功能Search Request的介绍与使用 |
您所在的位置:网站首页 › 对证据进行鉴定 › elasticsearch(七)java 搜索功能Search Request的介绍与使用 |
目录 1,首先创建主搜索请求: 2,对主搜索请求进行参数设置 ; ; ; ;前端几节都是介绍的基于单个文档或着单个文档库的操作, ; ; ; ;本节开始将介绍基于所有或指定的任何个数文档库的操作的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 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |