ES多条件查询(1)
2016-01-01 15:47
253 查看
方案:(1)
Client client = new TransportClient().addTransportAddresses(new InetSocketTransportAddress("127.0.0.1", 9300)); BoolQueryBuilder boleanQueryBuilder = QueryBuilders.boolQuery(); boleanQueryBuilder.must(QueryBuilders.termsQuery("SRC_ADDRESS", "<span style="font-size:24px;">192.168.100.1</span>","<span style="font-size:24px;">192.168.100.2</span>")); boleanQueryBuilder.must(QueryBuilders.termsQuery("DEST_PORT", "8110","80")); SearchResponse searchResponse = client.prepareSearch("myindex").setTypes("logs") .setQuery(boleanQueryBuilder) .setFrom(10) .setSize(20) .execute().actionGet(); System.out.println(searchResponse.toString()); SearchHits hits = searchResponse.getHits(); if (null == hits || hits.totalHits() == 0) { System.out.println("对不起,您没有查询到结果!!"); } else { for (SearchHit hit : hits) { String json = hit.getSourceAsString(); System.out.println(json); } }方案2:
Client client = ESUtils.getEsClient(); Iterator<String> iterator = newProtolPortSet.iterator(); List<SearchRequestBuilder> list = new ArrayList<SearchRequestBuilder>(); SearchRequestBuilder srb; while (iterator.hasNext()) { String[] str = iterator.next().split(":"); if(!str[0].equals("*")&&!str[1].equals("*")){ srb = client.prepareSearch("myindex") .setTypes("logs") .setPostFilter(FilterBuilders.rangeFilter("begin_Time").from(timeMap.get("fromTime")).to(timeMap.get("toTime"))) .setQuery(QueryBuilders.boolQuery().must(QueryBuilders.termQuery("APP_PROTOCOL_NAME", str[0]))) .setQuery(QueryBuilders.boolQuery().must(QueryBuilders.termQuery("DEST_PORT", str[1]))); }else if(str[0].equals("*")&&!str[1].equals("*")){ srb = client.prepareSearch("myindex") .setTypes("logs") .setPostFilter(FilterBuilders.rangeFilter("begin_Time").from(timeMap.get("fromTime")).to(timeMap.get("toTime"))) .setQuery(QueryBuilders.boolQuery().must(QueryBuilders.termQuery("DEST_PORT", str[1]))); }else if(!str[0].equals("*")&&str[1].equals("*")){ srb = client.prepareSearch("myindex") .setTypes("logs") .setPostFilter(FilterBuilders.rangeFilter("begin_Time").from(timeMap.get("fromTime")).to(timeMap.get("toTime"))) .setQuery(QueryBuilders.boolQuery().must(QueryBuilders.termQuery("DEST_PORT", str[1]))); }else{ srb = client.prepareSearch("myindex") .setTypes("logs") .setPostFilter(FilterBuilders.rangeFilter("begin_Time").from(timeMap.get("fromTime")).to(timeMap.get("toTime"))); } list.add(srb); } MultiSearchRequestBuilder multiSearchRequestBuilder= client.prepareMultiSearch(); for(int i = 0; i < list.size();i++){ multiSearchRequestBuilder.add(list.get(i)); } if(null!=list&&list.size()>0){//有查询条件 MultiSearchResponse sr = multiSearchRequestBuilder .execute().actionGet(); }else{//没有查询条件 }
相关文章推荐
- 使用WebView自定义加载网页
- 只留痴人说梦声——2015年年总
- warning C4996: 'strcpy': This function or variable may be unsafe.
- HDU2141 Can you find it?(二分)
- btrfs命令的使用
- 运用连接进行多表更新和多表删除
- BOTC软件开发模型初级版
- 视频播放— MPMoviePlayerViewController的简单认识
- Sicily.Handling e-mail addresses
- 设计模式学习——单件模式
- Arrays.toString(a)--->将数组a的值转换为字符串
- 关于linux的systemd的一些事
- 判断一棵树是否为完全二叉树
- POJ2240 Arbitrage(Floyd判负环)
- aix 下 实现goldengate 随os启动而自己主动启动的脚本
- vsftp搭建
- BZOJ 2631 TREE
- JavaScript 操作 Cookie
- squid搭建
- Bitmap二次采样以及压缩另一种方式