//聚合查询@Testvoid Collection_query() throws IOException {SearchRequest searchRequest = new SearchRequest().indices("users");SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();searchSourceBuilder.timeout(new TimeValue(10, TimeUnit.SECONDS));//条件max("maxid")  maxid:结果名称MaxAggregationBuilder maxAggregationBuilder = AggregationBuilders.max("maxid").field("id");//聚合查询  aggregationsearchSourceBuilder.aggregation(maxAggregationBuilder);searchRequest.source(searchSourceBuilder);SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);//获取聚合后的结果 可以使用类型强转Max max = (Max) searchResponse.getAggregations().asMap().get("maxid");System.out.println(max.getValue());}//分组查询//按名字分组  子聚合里面查看平均年龄@Testvoid group_search() throws IOException {Logger logger = LogManager.getRootLogger();SearchRequest searchRequest = new SearchRequest("users");SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();searchSourceBuilder.size(0);//不返回 hits 里的数据 提高性能searchSourceBuilder.timeout(new TimeValue(10, TimeUnit.SECONDS));//按照name分组TermsAggregationBuilder termsAggregationBuilder = AggregationBuilders.terms("nameGroup").field("name.keyword");//子聚合 平均agetermsAggregationBuilder.subAggregation(AggregationBuilders.avg("avg_age").field("age"));//聚合查询  aggregationsearchSourceBuilder.aggregation(termsAggregationBuilder);searchRequest.source(searchSourceBuilder);SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);Map<String, Aggregation> asMap = searchResponse.getAggregations().getAsMap();//需要强转Terms terms = (Terms) asMap.get("nameGroup");logger.info(terms.getDocCountError());logger.info(terms.getSumOfOtherDocCounts());for (Terms.Bucket bucket : terms.getBuckets()) {logger.info("key: " + bucket.getKeyAsString());logger.info("docCount: " + bucket.getDocCount());logger.info("docCountError: " + bucket.getDocCountError());//注意这里用 具体聚合类型接受  平均:AvgAvg avg_age = bucket.getAggregations().get("avg_age"); //获取子聚合logger.info("avg_age:" + avg_age.getValue());logger.info("------------------------------------");}}/*es的建议搜索  suggest_mode:建议模式 missing,popular,always
GET users/_search
{
"suggest": {"name_suggest": {"text": "迪丽热巴5","term": {"field": "name.keyword","suggest_mode":"popular"}}
}
}* *///建议查询//词项建议拼写检查,检查用户的拼写是否错误,如果有错给用户推荐正确的词,appel->apple@Testvoid suggest_search() throws IOException {Logger logger = LogManager.getRootLogger();SearchRequest searchRequest = new SearchRequest("users");SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();searchSourceBuilder.size(0);searchSourceBuilder.timeout(new TimeValue(10, TimeUnit.SECONDS));//创建termSuggestion聚合TermSuggestionBuilder termSuggestionBuilder = SuggestBuilders.termSuggestion("name.keyword").text("迪丽热巴9");//可以设置建议模式  默认为 missing :意思是 分词器没有才能查询出termSuggestionBuilder.suggestMode(TermSuggestionBuilder.SuggestMode.POPULAR);//创建主建议查询类SuggestBuilder suggestBuilder = new SuggestBuilder();//指定名字 并添加suggestBuilder.addSuggestion("suggest_name", termSuggestionBuilder);//放入条件searchSourceBuilder.suggest(suggestBuilder);//加入搜索请求searchRequest.source(searchSourceBuilder);//执行 返回结果SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);//处理结果  注意:用TermSuggestion接受(自动转换)TermSuggestion termSuggestion = searchResponse.getSuggest().getSuggestion("suggest_name");for (TermSuggestion.Entry entry : termSuggestion.getEntries()) {//获取自己的数据text: 迪丽热巴9logger.info("text: " + entry.getText().string());for (TermSuggestion.Entry.Option option : entry) {/*结果集数据:    suggest option : 迪丽热巴2:    suggest option : 迪丽热巴3:    suggest option : 迪丽热巴* */String suggestText = option.getText().string();logger.info("   suggest option : " + suggestText);}}}/*
#自动补全功能 必须数据类型为completion
根据用户的输入联想到可能的词或者短语
GET movies/_search
{"_source": "","suggest": {"name_suggest": {"prefix": "ht","completion": {"field": "name"}}}}* */@Testvoid suggest_prefix() throws IOException {Logger logger = LogManager.getLogger();SearchRequest searchRequest = new SearchRequest("movies");SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();searchSourceBuilder.size(0);searchSourceBuilder.timeout(new TimeValue(10, TimeUnit.SECONDS));SuggestBuilder suggestBuilder = new SuggestBuilder();//skipDuplicates 跳过重复项 默认falseCompletionSuggestionBuilder completionSuggestionBuilder = SuggestBuilders.completionSuggestion("name").prefix("ht").skipDuplicates(true);suggestBuilder.addSuggestion("name_suggest", completionSuggestionBuilder);searchSourceBuilder.suggest(suggestBuilder);searchRequest.source(searchSourceBuilder);//发送请求SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);//处理请求   注意 用聚合后的结果类型接受 (自动转换)CompletionSuggestion completionSuggestion=searchResponse.getSuggest().getSuggestion("name_suggest");for (CompletionSuggestion.Entry options : completionSuggestion) {//自己传入的参数  htlogger.info(" text:"+options.getText().string());for (CompletionSuggestion.Entry.Option option : options) {logger.info("   suggest option : "+option.getText().string());}/*
2021-05-06 09:44:21.924  INFO 21636 --- [           main] c.h.s.SpringdataEsApplicationTests       : text: ht
2021-05-06 09:44:21.928  INFO 21636 --- [           main] c.h.s.SpringdataEsApplicationTests       :    suggest option : htaaaa
2021-05-06 09:44:21.928  INFO 21636 --- [           main] c.h.s.SpringdataEsApplicationTests       :    suggest option : htbbbb
2021-05-06 09:44:21.929  INFO 21636 --- [           main] c.h.s.SpringdataEsApplicationTests       :    suggest option : htcccc
2021-05-06 09:44:21.930  INFO 21636 --- [           main] c.h.s.SpringdataEsApplicationTests       :    suggest option : htdddd
2021-05-06 09:44:21.931  INFO 21636 --- [           main] c.h.s.SpringdataEsApplicationTests       :    suggest option : hteeee* */}}

es高级客户端聚合查询api快速入门相关推荐

  1. Keras functional API快速入门

    2019独角兽企业重金招聘Python工程师标准>>> Keras functional API快速入门 The Keras functional API is the way to ...

  2. php yii2 api框架,Yii2框架制作RESTful风格的API快速入门教程

    先给大家说下什么是REST restful REST全称是Representational State Transfer,中文意思是表述(编者注:通常译为表征)性状态转移. 它首次出现在2000年Ro ...

  3. qq位置如何用启动百度地图定位服务器,腾讯位置服务API快速入门

    前言 之前项目有个需求,在网页上显示微信发送过来的位置信息,该开始想用百度地图,后来发现腾讯地图相对简单一点 快速入门 申请Key 引入js 把###替换成你申请的key 定义容器 设置好宽高度 设置 ...

  4. java azure blob 查询_快速入门:适用于 Java 的 Azure Blob 存储客户端库 v8 | Microsoft Docs...

    您现在访问的是微软AZURE全球版技术文档网站,若需要访问由世纪互联运营的MICROSOFT AZURE中国区技术文档网站,请访问 https://docs.azure.cn. 快速入门:使用 Jav ...

  5. 如何使用免费手机号归属地查询API快速获取手机号归属地,两种方法【源码可用】

    福利彩蛋:没有好玩的API接口?上百款免费接口等你来 一.通过手机号码归属地接口查询 根据手机号码(段),查询手机号码归属地信息,如省份 .城市.运营商 简单快捷,根据个人需求进行开发 接口请求流程: ...

  6. 高级API 快速入门之第七章 本地模拟下载文件

    一:控制台版本的聊天互发消息     服务端: package com.zking.test;import java.io.BufferedReader; import java.io.Buffere ...

  7. 高级API快速入门之群聊天室【09】

    一.控制台版本的群聊天室                     其原理就是:通过死循环进行保存连接服务器的客户端,并创建一个容器来保存所有连接服务器的客户端              服务器: pa ...

  8. 高级API 快速入门之第六章 用窗体实现Socket对话聊天案例

    服务端: package com.zking.test;import java.awt.Font; import java.awt.event.ActionEvent; import java.awt ...

  9. Elasticsearch(十)【NEST高级客户端--搜索查询】

    搜索 Search API允许您执行搜索查询并获取与查询匹配的搜索匹配. Elasticsearch的搜索功能可能是您使用它的原因之一,NEST公开了所有可用的不同类型的搜索,以及一些聪明的使用Ela ...

最新文章

  1. mysql typeindex_explain mysql的type字段,索引的类型
  2. Bind9的dns解析服务
  3. 【转】建立公用程序库,提升软件开发生产力
  4. 转: 加快Android编译速度
  5. 设计模式之(四)抽象工厂模式(Abstract Factory)
  6. simulink同步发电机模型_基于Speedgoat的永磁同步电机控制Demo
  7. 简单的C#字符串数组转字符串方法
  8. WebStorm 2017 最新版激活方式
  9. 【三】Jmeter:测试片段
  10. C++设计模式之Singleton模式(单例模式)
  11. 手动制造报错_Windows 10驱动更新调整:不再自动安装“手动”驱动更新
  12. Jupyter 同时支持python2、python3 kernel
  13. chrome 开启HEVC硬件解码
  14. Hadoop的安装教程,很详细
  15. 第1142期AI100_机器学习日报(2017-11-03)
  16. Android keeps stopping
  17. 大型电商平台设计实例:电商平台总体设计和业务模型设计
  18. Dm8+jpa整合liquibase框架
  19. 简练软考知识点整理-组建项目团队
  20. 【网络技术题库梳理8】网络系统结构与设计的基本原则

热门文章

  1. python List中删除特定元素
  2. Java8中字符串连接(join)收集器 Collectors.joining
  3. Sox切割脚本简单思路
  4. python安装教程(搬运工)
  5. 想考阿里云acp证书,报哪个机构好?
  6. perl linux yum,Linux CentOS6.5(x86_64)安装Perl5.26
  7. Error: errCode: -501000 | errMsg: Environment create at tencentcloud cannot access from wx-miniapp
  8. Redis3.0.0集群一键脚本 -by古斌
  9. [python] 基于Gradio可视化部署机器学习应用
  10. vue + html2canvas + ArcGIS 3.x 地图一键截图功能踩坑之路(一)