IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Elasticsearch高级客户端是如何搜索的? -> 正文阅读

[大数据]Elasticsearch高级客户端是如何搜索的?

前言

  1. Java高级Rest客户端在Java低级REST客户端之上运行。
  2. 它的主要目标是公开API特定的方法,接受请求对象作为参数并返回响应对象
  3. Java构建器可以看到更详细构建方法

搜索API

  1. SearchRequest用于任何与搜索文档、聚合、建议(suggestions )有关的操作,并提供请求在结果文档上高亮显示的方法
    SearchRequest searchRequest = new SearchRequest(); //如果没有参数,这会针对所有索引运行
    //大多数搜索参数都添加到SearchSourceBuilder中。它为搜索请求体中的所有内容提供了setter方法
    SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); 
    searchSourceBuilder.query(QueryBuilders.matchAllQuery()); //将match_all查询添加到SearchSourceBuilder
    searchRequest.source(searchSourceBuilder);//添加SearchSourceBuilder到SearchRequest
    

设置请求的索引

  1. posts为索引名
    SearchRequest searchRequest = new SearchRequest("posts");
    

使用SearchSourceBuilder

  1. 控制搜索行为的大多数选项都可以在SearchSourceBuilder上设置,它包含的选项或多或少与Rest API的搜索请求主体中的选项相当
    SearchSourceBuilder sourceBuilder = new SearchSourceBuilder(); 
    sourceBuilder.query(QueryBuilders.termQuery("user", "kimchy")); //设置查询。可以是任何类型QueryBuilder
    sourceBuilder.from(0); 
    sourceBuilder.size(5); 
    sourceBuilder.timeout(new TimeValue(60, TimeUnit.SECONDS)); //设置一个可选的超时事件来控制允许搜索花费多长时间
    
  2. 将SearchSourceBuilder添加到SearchRequest中
    SearchRequest searchRequest = new SearchRequest();
    searchRequest.indices("posts"); //设置查询索引
    searchRequest.source(sourceBuilder);
    

搜索查询

  1. 搜索查询是使用QueryBuilder对象创建的,QueryBuilder适用于Elasticsearch的query DSL支持的每一种搜索查询类型
  2. 创建一个全文匹配查询,在字段"user"上匹配文本"kimchy"
    	MatchQueryBuilder matchQueryBuilder = new MatchQueryBuilder("user", "kimchy");
    	//配置它创建的搜索查询的选项
    	matchQueryBuilder.fuzziness(Fuzziness.AUTO); //在匹配查询上启用模糊匹配
    	matchQueryBuilder.prefixLength(3);  //在匹配查询上设置前缀长度选项
    	matchQueryBuilder.maxExpansions(10); //设置最大扩展选项来控制查询的模糊过程
    
  3. 还可以使用QueryBuilders实用程序类创建QueryBuilder对象。这个类提供了帮助器方法,可以使用流畅的编程风格创建QueryBuilder对象
    	QueryBuilder matchQueryBuilder = QueryBuilders.matchQuery("user", "kimchy")
                                                .fuzziness(Fuzziness.AUTO)
                                                .prefixLength(3)
                                                .maxExpansions(10);
    
  4. QueryBuilder对象必须添加到SearchSouceBuilder中
    	searchSourceBuilder.query(matchQueryBuilder);
    

指定排序

SearchSourceBuilder允许添加一个或多个SortBuilder实例。有四种特殊的实现(Field-, Score-, GeoDistance-和ScriptSortBuilder)

sourceBuilder.sort(new ScoreSortBuilder().order(SortOrder.DESC));  //按降序排序_score(默认)
sourceBuilder.sort(new FieldSortBuilder("id").order(SortOrder.ASC)); //按_id字段升序排序

请求聚合

  1. 通过创建适当的AggregationBuilder
  2. 在SearchSourceBuilder上设置它,将聚合添加到搜索中
  3. 在下面例子中,根据公司名称创建一个term聚合,并根据公司员工的平均年龄创建了子聚合
    SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
    TermsAggregationBuilder aggregation = AggregationBuilders.terms("by_company")
            .field("company.keyword");
    aggregation.subAggregation(AggregationBuilders.avg("average_age")
            .field("age"));
    searchSourceBuilder.aggregation(aggregation);
    
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-08-09 10:18:18  更:2021-08-09 10:19:27 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/17 18:09:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码