• Elasticsearch Java API—多条件查询(must)


    多条件设置

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

    Demo:

    package com.zx.znyd.es;
     
    import java.io.IOException;
    import java.util.Date;
    import java.util.HashMap;
    import java.util.Map;import org.apache.commons.lang.StringUtils;
    import org.elasticsearch.action.admin.indices.mapping.put.PutMappingRequest;
    import org.elasticsearch.action.get.GetResponse;
    import org.elasticsearch.action.index.IndexRequest;
    import org.elasticsearch.action.search.SearchResponse;
    import org.elasticsearch.action.search.SearchType;
    import org.elasticsearch.client.Client;
    import org.elasticsearch.client.Requests;
    import org.elasticsearch.client.transport.TransportClient;
    import org.elasticsearch.common.mustache.Mustache;
    import org.elasticsearch.common.settings.ImmutableSettings;
    import org.elasticsearch.common.settings.Settings;
    import org.elasticsearch.common.transport.InetSocketTransportAddress;
    import org.elasticsearch.common.transport.TransportAddress;
    import org.elasticsearch.common.xcontent.XContentBuilder;
    import org.elasticsearch.common.xcontent.XContentFactory;
    import org.elasticsearch.index.query.MatchQueryBuilder.Operator;
    import org.elasticsearch.index.query.QueryBuilders;
    import org.elasticsearch.search.SearchHit;
    import org.elasticsearch.search.SearchHits;
    import org.elasticsearch.search.sort.SortOrder;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.beans.factory.annotation.Qualifier;
    import org.springframework.test.context.ContextConfiguration;
    import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
     
    import com.alibaba.fastjson.JSONObject;
    import com.zx.znyd.common.MD5;
    import com.zx.znyd.common.SpringContextUtil;
    import com.zx.znyd.dao.AutoReplyDao;
    import com.zx.znyd.data.model.AutoReply;
    import com.zx.znyd.data.model.LogIndex;
    import com.zx.znyd.service.AutoReplyDeployService;
     
    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration(locations = "classpath:applicationContext.xml")
    public class TestES {
     
        @Autowired
        @Qualifier("esClient")
        private Client client;
         
        @Test 
        public void testSearch() 
        { 
            String index="index_log_daily";
            String type="uq_log";
            String uquestion = "139";
            String province = "江苏";
            SearchResponse searchResponse = client.prepareSearch(index) 
                    .setTypes(type) 
                    .setQuery(QueryBuilders.matchAllQuery()) //查询所有
                    .setQuery(QueryBuilders.boolQuery()
                    .must(QueryBuilders.matchQuery("uquestion", uquestion))//查询uquestion为139的
                    .must(QueryBuilders.matchQuery("province", province)))//查询省份为江苏的       
                    .setSearchType(SearchType.QUERY_THEN_FETCH) 
                    .setFrom(0).setSize(10)//分页 
                    //.addSort("age", SortOrder.DESC)//排序 
                    .get(); 
               
            SearchHits hits = searchResponse.getHits(); 
            long total = hits.getTotalHits(); 
            System.out.println(total); 
            SearchHit[] searchHits = hits.hits(); 
            for(SearchHit s : searchHits) 
            { 
                System.out.println(s.getSourceAsString());
                String []logindex=s.getSourceAsString().split(",");
                 
            } 
        } 
    }
    

      贴下我的代码:

           /**
    	 * 错误日志统计
    	 */
    	@Override
    	public List<TomcatModel> errorTomcatRequest(Page page, String index,String startDate, String endDate) {
    		TransportClient client = getClient();
    		if (index.isEmpty() == true) {
    			return null;
    		}
    		DateInterval dateInterval = RegexUtil.getDateInterval(new DateInterval(startDate,endDate),"yyyyMMdd");
    		List<TomcatModel> list = new ArrayList<TomcatModel>();
    		try {
    			SearchResponse response = client.prepareSearch(index).setTypes(getIndexType()).setFrom(page.getStart())
    					.setSize(page.getLength())
    					.setQuery(QueryBuilders.boolQuery().must(QueryBuilders.regexpQuery("response", "[4-6][0-9][0-9]"))
    					.must(QueryBuilders.rangeQuery("@timestamp").format("yyyyMMdd").from(dateInterval.getStartDate()).to(dateInterval.getEndDate())))
    					.addSort("@timestamp", SortOrder.ASC)
    					.execute().actionGet();
    			SearchHits myhits = response.getHits();
    			page.setRecordsFiltered((int) myhits.getTotalHits());
    			page.setRecordsTotal((int) myhits.getTotalHits());
    
    			int i = 1;
    			for (SearchHit hit : myhits.getHits()) {
    				TomcatModel tomcat = new TomcatModel();
    				Map<String, Object> map = hit.getSource();
    				tomcat.setClientip((String) map.get("clientip"));
    				tomcat.setResponse((String) map.get("response"));
    				tomcat.setMessage((String) map.get("message"));
    				tomcat.setType((String) map.get("verb"));
    				tomcat.setTimestamp((String) map.get("timestamp"));
    				tomcat.setRowId(i);
    				list.add(tomcat);
    				i++;
    			}
    		} catch (IndexNotFoundException e) {
    			System.err.println("此索引不存在!");
    		}catch (Exception e) {
    			e.printStackTrace();
    		}
    		return list;
    	}
    

      

    
    
  • 相关阅读:
    htmlcleaner使用及xpath语法初探
    薛兆丰 经济学思维:只给你讲地道的经济学思维 得到订阅专栏 下载
    解决web项目存在多个log4j.properties配置文件,导致日志级别配置不生效问题
    RC4被JDK8默认禁用导致腾讯QQ邮箱无法访问
    JavaMail SMTP服务器发送邮件程序示例 java通过dns服务器解析ip地址
    javamail-android
    使用POP3协议接收并解析电子邮件(全)
    [API]使用Blueprint来高雅的编写接口文档 前后端api文档,移动端api文档
    优酷真实视频地址解析——2016年9月20日 优酷视频下载工具
    记录思想分享知识编辑器 Markdown 编辑阅读器
  • 原文地址:https://www.cnblogs.com/zhangmingcheng/p/7700951.html
Copyright © 2020-2023  润新知