最近遇到了一个叫ElasticSearch盆友,用它玩了一下查询游戏:
List<Map<String, Object>> dataList = new ArrayList<Map<String, Object>>(); Client client = null; try{ //获取Elasticsearch client对象 client = getEsClient(); //设置查询条件(类似sql中 eventid = eventid ) QueryBuilder qb = QueryBuilders.boolQuery().must(QueryBuilders.termQuery("eventid", eventid)); // 设置ES中 indexName 和 indexType,以及QueryBuilders 对象 SearchRequestBuilder requestBuilder = client.prepareSearch(EventBean.indexName) .setTypes(EventBean.indexType) .setQuery(qb); //执行查询 (可以设置排序、分页) SearchResponse actionGet = requestBuilder.addSort(SortBuilders.fieldSort("occurtime").order(SortOrder.DESC)) .setFrom((pageNum-1) * pageSize) .setSize(pageNum * pageSize) .execute().actionGet(); //遍历查询结果 if(actionGet != null){ SearchHits hits = actionGet.getHits(); if(hits != null && hits.getHits() != null){ Map<String, Object> hitMap = null; for (SearchHit hit : hits.getHits()){ hitMap = hit.getSource(); if(hitMap == null || hitMap.size() <= 0){ continue; } dataList.add(hitMap ); } } } }catch(Exception ex){ ex.printStackTrace(); }finally{ //关闭client } return dataList ;