Es基于多条件进行查询(2)

本文介绍了一个具体的Elasticsearch查询示例,通过设置时间范围和特定属性(如PROTOCOL_NAME为'http'和DEST_PORT为'80'),实现了精确的数据筛选。此方法适用于日志等大数据的高效检索。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


 例子1:基于时间段并且要有属性的限制,详细例子如下

DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSSSSS");
	    
	    Date lastTime = dateFormat.parse("2015-08-26 21:00:00:000000");	    
	    Date nowTime = dateFormat.parse("2015-08-26 21:05:00:000000");
	    		 
	  	    
		BoolQueryBuilder boleanQueryBuilder = QueryBuilders.boolQuery();		
		boleanQueryBuilder.must(QueryBuilders.termsQuery("PROTOCOL_NAME","http"));			
		boleanQueryBuilder.must(QueryBuilders.termsQuery("DEST_PORT","80"));

		SearchResponse searchResponse = client.prepareSearch("myindex")		         
				.setTypes("logs")	
				.setSearchType(SearchType.DFS_QUERY_THEN_FETCH)		
				.setQuery(QueryBuilders.filteredQuery(boleanQueryBuilder, FilterBuilders.rangeFilter("begin_Time").from(lastTime).to(nowTime).includeLower(false).includeUpper(true)))
			    .setFrom(0)
				.setSize(20)
				.execute()
				.actionGet();	
		
		SearchHits hits = searchResponse.getHits();			
		
		System.out.println(hits.getTotalHits());
		if (null == hits || hits.totalHits() == 0) {

			System.out.println("对不起,您没有查询到结果!!");

		} else {

			for (SearchHit hit : hits) {

				String json = hit.getSourceAsString();
								
				System.out.println(json);
			}
		}


上述代码中用粗线标明的是对时间的过滤和字段属性的限制条件的写法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值