例子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);
}
}
上述代码中用粗线标明的是对时间的过滤和字段属性的限制条件的写法。