本文转载自:http://blog.csdn.net/wangxiaotongfan/article/details/46531729?locationNum=6

在es中所有的查询结果都会保存在SearchResponse中,在从SearchResponse中读取数据的时候,有两种方式:第一种是对Query的结果进行读取,使用的是hit,每一条查询到的doc都是一个hit,可以将每个hit转换为map形式的数据,map的具体形式为<"field","value">的形式,可以得到每一个字段的名称与内容(具体代码如下);
 
public static List<Product> getSC(SearchResponse sr) {
  List<Product> products = new ArrayList<Product>();
  for (SearchHit hit : sr.getHits()) {
   Map<String, Object> source = hit.getSource();
   if (!source.isEmpty()) {
    for (Iterator<Map.Entry<String, Object>> it = source.entrySet()
      .iterator(); it.hasNext();) {
     Map.Entry<String, Object> entry = it.next();
     if ("title".equals(entry.getKey())) {
      System.out.println("title: "
       + entry.getValue());
     }
 
第二种方式是针对查询中的聚合问题(aggregation),聚合完成后的每条doc都是一个bucket(桶),他的访问只能通过bucket来进行,而不能使用hit,其操作形式具体如下:
 
Terms terms = response.getAggregations().get("hospital"); //hospital为查询聚合时,指定的聚合内容的名称
  DoctorFeeBean docBean = null;
  for (Bucket bucket : terms.getBuckets()) {
   docBean = new DoctorFeeBean();
   String name = bucket.getKey(); //按照聚合字段聚合完成后的名称
   long jiuzhencishu = bucket.getDocCount();//该字段的总共的次数
   Sum sum_money = bucket.getAggregations().get("sum_fee");
   double sum = sum_money.getValue();
   Cardinality cardinality = response.getAggregations().get("jiuzhenrenci");
   long num = cardinality.getValue();
   String temp [] = new String[2];
   temp = getInfo(client, name);
   String hospital = temp[0];
   String doctor_Department = temp[1];
   double feeAvgPerson = sum / num;
   
   docBean.setDoctor_Name(name);
   docBean.setDoctor_Hospital(hospital);
   docBean.setDoctor_Department(doctor_Department);
   docBean.setDoctor_Total_Fee(sum);
   docBean.setNumber_Of_Visit_Doctor((int)jiuzhencishu);
   docBean.setVisitPersonNumber((int)num);
   docBean.setFeeAvgPerson(feeAvgPerson);
   doctorFeeBeans.add(docBean);
  }

ElasticSearch读取查询结果(search)的更多相关文章

  1. ElasticSearch 常用查询语句

    为了演示不同类型的 ElasticSearch 的查询,我们将使用书文档信息的集合(有以下字段:title(标题), authors(作者), summary(摘要), publish_date(发布 ...

  2. 分布式搜索引擎Elasticsearch的查询与过滤

    一.写入 先来一个简单的官方例子,插入的参数为-XPUT,插入一条记录. curl -XPUT 'http://localhost:9200/test/users/1' -d '{ "use ...

  3. 【转】elasticsearch的查询器query与过滤器filter的区别

    很多刚学elasticsearch的人对于查询方面很是苦恼,说实话es的查询语法真心不简单-  当然你如果入门之后,会发现elasticsearch的rest api设计是多么有意思. 说正题,ela ...

  4. 基于百度地图SDK和Elasticsearch GEO查询的地理围栏分析系统(1)

    本文描述了一个系统,功能是评价和抽象地理围栏(Geo-fencing),以及监控和分析核心地理围栏中业务的表现. 技术栈:Spring-JQuery-百度地图WEB SDK 存储:Hive-Elast ...

  5. 002_分布式搜索引擎Elasticsearch的查询与过滤

    一.写入 先来一个简单的官方例子,插入的参数为-XPUT,插入一条记录. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 curl -XPUT 'http:/ ...

  6. ElasticSearch—分页查询

    ElasticSearch查询—分页查询详解 Elasticsearch中数据都存储在分片中,当执行搜索时每个分片独立搜索后,数据再经过整合返回.那么,如何实现分页查询呢? 按照一般的查询流程来说,如 ...

  7. ElasticSearch DSL 查询

    公号:码农充电站pro 主页:https://codeshellme.github.io DSL(Domain Specific Language)查询也叫做 Request Body 查询,它比 U ...

  8. Elasticsearch Kibana查询语法

    Elasticsearch Kibana查询语法 2018年06月03日 23:52:30 wangpei1949 阅读数:3992   Elasticsearch Kibana Discover的搜 ...

  9. Elasticsearch 邻近查询示例

    Elasticsearch 邻近查询示例(全切分分词) JAVA API方式: SpanNearQueryBuilder span = QueryBuilders.spanNearQuery(); s ...

随机推荐

  1. 006PHP基础知识——数据类型(三)

    <?php /** * 数据类型(三) * PHP是一个弱类型的语言 */ //检测数据类型:gettype() 返回字符串的数据类型 /*$str="美丽中国"; echo ...

  2. poj21516

    首先对于一种商品 如果这种货不足需求就直接输出-1 剩下的就是KM算法 分k次分别计算每种商品的最小权值匹配 代码: #include<cstdio> #include<cstrin ...

  3. HDU 1198 Farm Irrigation(并查集+位运算)

    Farm Irrigation Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Tot ...

  4. confluence 部署与配置

    什么是confluence 部署步骤 安装 下载目标平台目标版本安装包.windows为例 若第一次默认安装 一直下一步. 若再次安装 下载并将mysql 连接控件放到 /xxx/xxx/conflu ...

  5. shell的初步介绍

    linux下Shell介绍 概述:每个人在成功登陆LIUX后,系统会出现不同的提示符号,例如$,~,#等,然后你就可以开始输入你需要的命令,若是命令正确,系统就会一句命令的要求来执行,知道注销系统位置 ...

  6. Django中类视图使用装饰器的方式

    类视图使用装饰器 为类视图添加装饰器,可以使用两种方法. 为了理解方便,我们先来定义一个为函数视图准备的装饰器(在设计装饰器时基本都以函数视图作为考虑的被装饰对象),及一个要被装饰的类视图. def ...

  7. 解决RTMP推送时间戳问题引起HLS切片不均匀导致手机浏览器播放卡顿的问题

    本文转自EasyDarwin开源团队成员Kim的博客:http://blog.csdn.net/jinlong0603/article/details/74161115 引言 最近在测试EasyNVR ...

  8. Selenium+PhantomJS使用初体验

    抓取使用Ajax技术完成的网页内容时可以使用Selenium+PhantomJS技术 1.pip install selenium 2.下载Phantomjs不需要用pip   武汉科技大学首页有一块 ...

  9. 用vue实现百度搜索功能

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. SAPUI5实例一:来创建Web应用UI

    试试SAPUI5.这是SAP比较重要的一个UI库.完全通过HTML5实现,可以作为Web和移动应用的UI开发. 现在已经开源了.在这里可以下载: http://sap.github.io/openui ...