多条件设置

  1. //多条件设置
  2. MatchPhraseQueryBuilder mpq1 = QueryBuilders
  3. .matchPhraseQuery("pointid","W3.UNIT1.10LBG01CP301");
  4. MatchPhraseQueryBuilder mpq2 = QueryBuilders
  5. .matchPhraseQuery("inputtime","2016-07-21 00:00:01");
  6. QueryBuilder qb2 = QueryBuilders.boolQuery().must(mpq1).must(mpq2);

Demo:

  1. package com.zx.znyd.es;
  2.  
  3. import java.io.IOException;
  4. import java.util.Date;
  5. import java.util.HashMap;
  6. import java.util.Map;import org.apache.commons.lang.StringUtils;
  7. import org.elasticsearch.action.admin.indices.mapping.put.PutMappingRequest;
  8. import org.elasticsearch.action.get.GetResponse;
  9. import org.elasticsearch.action.index.IndexRequest;
  10. import org.elasticsearch.action.search.SearchResponse;
  11. import org.elasticsearch.action.search.SearchType;
  12. import org.elasticsearch.client.Client;
  13. import org.elasticsearch.client.Requests;
  14. import org.elasticsearch.client.transport.TransportClient;
  15. import org.elasticsearch.common.mustache.Mustache;
  16. import org.elasticsearch.common.settings.ImmutableSettings;
  17. import org.elasticsearch.common.settings.Settings;
  18. import org.elasticsearch.common.transport.InetSocketTransportAddress;
  19. import org.elasticsearch.common.transport.TransportAddress;
  20. import org.elasticsearch.common.xcontent.XContentBuilder;
  21. import org.elasticsearch.common.xcontent.XContentFactory;
  22. import org.elasticsearch.index.query.MatchQueryBuilder.Operator;
  23. import org.elasticsearch.index.query.QueryBuilders;
  24. import org.elasticsearch.search.SearchHit;
  25. import org.elasticsearch.search.SearchHits;
  26. import org.elasticsearch.search.sort.SortOrder;
  27. import org.junit.Test;
  28. import org.junit.runner.RunWith;
  29. import org.springframework.beans.factory.annotation.Autowired;
  30. import org.springframework.beans.factory.annotation.Qualifier;
  31. import org.springframework.test.context.ContextConfiguration;
  32. import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
  33.  
  34. import com.alibaba.fastjson.JSONObject;
  35. import com.zx.znyd.common.MD5;
  36. import com.zx.znyd.common.SpringContextUtil;
  37. import com.zx.znyd.dao.AutoReplyDao;
  38. import com.zx.znyd.data.model.AutoReply;
  39. import com.zx.znyd.data.model.LogIndex;
  40. import com.zx.znyd.service.AutoReplyDeployService;
  41.  
  42. @RunWith(SpringJUnit4ClassRunner.class)
  43. @ContextConfiguration(locations = "classpath:applicationContext.xml")
  44. public class TestES {
  45.  
  46. @Autowired
  47. @Qualifier("esClient")
  48. private Client client;
  49.  
  50. @Test
  51. public void testSearch()
  52. {
  53. String index="index_log_daily";
  54. String type="uq_log";
  55. String uquestion = "139";
  56. String province = "江苏";
  57. SearchResponse searchResponse = client.prepareSearch(index)
  58. .setTypes(type)
  59. .setQuery(QueryBuilders.matchAllQuery()) //查询所有
  60. .setQuery(QueryBuilders.boolQuery()
  61. .must(QueryBuilders.matchQuery("uquestion", uquestion))//查询uquestion为139的
  62. .must(QueryBuilders.matchQuery("province", province)))//查询省份为江苏的
  63. .setSearchType(SearchType.QUERY_THEN_FETCH)
  64. .setFrom(0).setSize(10)//分页
  65. //.addSort("age", SortOrder.DESC)//排序
  66. .get();
  67.  
  68. SearchHits hits = searchResponse.getHits();
  69. long total = hits.getTotalHits();
  70. System.out.println(total);
  71. SearchHit[] searchHits = hits.hits();
  72. for(SearchHit s : searchHits)
  73. {
  74. System.out.println(s.getSourceAsString());
  75. String []logindex=s.getSourceAsString().split(",");
  76.  
  77. }
  78. }
  79. }

  贴下我的代码:

  1. /**
  2. * 错误日志统计
  3. */
  4. @Override
  5. public List<TomcatModel> errorTomcatRequest(Page page, String index,String startDate, String endDate) {
  6. TransportClient client = getClient();
  7. if (index.isEmpty() == true) {
  8. return null;
  9. }
  10. DateInterval dateInterval = RegexUtil.getDateInterval(new DateInterval(startDate,endDate),"yyyyMMdd");
  11. List<TomcatModel> list = new ArrayList<TomcatModel>();
  12. try {
  13. SearchResponse response = client.prepareSearch(index).setTypes(getIndexType()).setFrom(page.getStart())
  14. .setSize(page.getLength())
  15. .setQuery(QueryBuilders.boolQuery().must(QueryBuilders.regexpQuery("response", "[4-6][0-9][0-9]"))
  16. .must(QueryBuilders.rangeQuery("@timestamp").format("yyyyMMdd").from(dateInterval.getStartDate()).to(dateInterval.getEndDate())))
  17. .addSort("@timestamp", SortOrder.ASC)
  18. .execute().actionGet();
  19. SearchHits myhits = response.getHits();
  20. page.setRecordsFiltered((int) myhits.getTotalHits());
  21. page.setRecordsTotal((int) myhits.getTotalHits());
  22.  
  23. int i = 1;
  24. for (SearchHit hit : myhits.getHits()) {
  25. TomcatModel tomcat = new TomcatModel();
  26. Map<String, Object> map = hit.getSource();
  27. tomcat.setClientip((String) map.get("clientip"));
  28. tomcat.setResponse((String) map.get("response"));
  29. tomcat.setMessage((String) map.get("message"));
  30. tomcat.setType((String) map.get("verb"));
  31. tomcat.setTimestamp((String) map.get("timestamp"));
  32. tomcat.setRowId(i);
  33. list.add(tomcat);
  34. i++;
  35. }
  36. } catch (IndexNotFoundException e) {
  37. System.err.println("此索引不存在!");
  38. }catch (Exception e) {
  39. e.printStackTrace();
  40. }
  41. return list;
  42. }

  

  1.  

Elasticsearch Java API—多条件查询(must)的更多相关文章

  1. [ElasticSearch]Java API 之 词条查询(Term Level Query)

    1. 词条查询(Term Query)  词条查询是ElasticSearch的一个简单查询.它仅匹配在给定字段中含有该词条的文档,而且是确切的.未经分析的词条.term 查询 会查找我们设定的准确值 ...

  2. Elasticsearch java api 常用查询方法QueryBuilder构造举例

    转载:http://m.blog.csdn.net/u012546526/article/details/74184769 Elasticsearch java api 常用查询方法QueryBuil ...

  3. Elasticsearch java api 基本搜索部分详解

    文档是结合几个博客整理出来的,内容大部分为转载内容.在使用过程中,对一些疑问点进行了整理与解析. Elasticsearch java api 基本搜索部分详解 ElasticSearch 常用的查询 ...

  4. 第08章 ElasticSearch Java API

    本章内容 使用客户端对象(client object)连接到本地或远程ElasticSearch集群. 逐条或批量索引文档. 更新文档内容. 使用各种ElasticSearch支持的查询方式. 处理E ...

  5. Elasticsearch Java API 很全的整理

    Elasticsearch 的API 分为 REST Client API(http请求形式)以及 transportClient API两种.相比来说transportClient API效率更高, ...

  6. Elasticsearch Java API深入详解

    0.题记 之前Elasticsearch的应用比较多,但大多集中在关系型.非关系型数据库与Elasticsearch之间的同步.以上内容完成了Elasticsearch所需要的基础数据量的供给.但想要 ...

  7. [搜索]ElasticSearch Java Api(一) -添加数据创建索引

    转载:http://blog.csdn.net/napoay/article/details/51707023 ElasticSearch JAVA API官网文档:https://www.elast ...

  8. 第四部分 数据搜索之使用HBASE的API实现条件查询

    因为数据清洗部分需要用到Mapreduce,所以先解决hbase的问题,可以用命令先在hbase存一下简单的数据进行查询,之后只要替换数据就可以实现了原本功能 在看该部分前,确保Hase API看了, ...

  9. ElasticSearch AggregationBuilders java api常用聚会查询

    以球员信息为例,player索引的player type包含5个字段,姓名,年龄,薪水,球队,场上位置.index的mapping为: "mappings": { "pl ...

随机推荐

  1. linux c++环境

    set expandtab set autoindent set smartindent

  2. 支持向量机SVM进阶

    本文适合于对SVM基本概念有一点了解的童鞋. SVM基本概念: 最大边缘平面--基本原理:结构风险最小化 分类器的泛化误差 支持向量 问题描述: 请对一下数据,利用svm对其进行分类.       最 ...

  3. sencha touch 在线实战培训 第一期 第二节

    2013.12.30晚上8点开的课,仍然有些紧张,开始讲课进度很慢,后面又有些快了... 本期培训一共八节,前三堂免费,后面的课程需要付费才可以观看. 本节内容: 页面实现及跳转控制 跳转容器.路由理 ...

  4. [转]centos6 与 7 其中的一些区别

    # vi /etc/ssh/sshd_config #将MaxAuthTries注释去掉 MaxAuthTries 5(登录次数) UseDNS no   默认是yes 的,把这个改为no,可以大大减 ...

  5. SPOJ1007 VLATTICE - Visible Lattice Points

    VLATTICE - Visible Lattice Points no tags  Consider a N*N*N lattice. One corner is at (0,0,0) and th ...

  6. Unity3D Shader描边效果

    Shader "Custom/RimColor" { Properties { _MainTex ("Base (RGB)", 2D) = "whit ...

  7. Unity3D Shader落雪效果

    Shader "Custom/Snow" { Properties { _MainTex ("Base (RGB)", 2D) = "white&qu ...

  8. docker自动开启端口转发功能

    yum -y install epel-release yum -y install docker-io service docker start docker pull haproxy # 此时自动 ...

  9. vue--axios发送请求

    首先安装:axios $ npm install axios $ cnpm install axios //taobao源 $ bower install axios 或者使用cdn: <scr ...

  10. mysql bin-logrow模式,base64转正常sql

    可以通过以下命令查看日志是否开启查看 show global variables like '%log%'; 当bin-log的模式设置为row时 不仅日志长得快 , 并且查看执行的sql时 , 也稍 ...