I have started learning JAVA search APIs on elasticsearch 6.3.2 and want to be compatible for future use, i don't want to use TransportClient
. I would like to run a query using aggregation something in SQL world would look like :
Select count(logLevel) from table where logLevel="ERROR" and responseCode like "500" and timestamp between ("2018-8-11", "2018-8-12")
Actually I want a dynamic date range of 3 days from current to past 3 days.
using the aggregation code as below :
SearchSourceBuilder ssb = new SearchSourceBuilder();
ssb.query(QueryBuilders.termQuery("responseCode", 500));
// only with this code the total hits I see is 0...!!
TermsAggregationBuilder termAgg = AggregationBuilders.terms("ERROR")
.field("logLevel.keyword");
RangeAggregationBuilder rangeAgg = AggregationBuilders.range("dating").field("timestamp.keyword");
// how to put a dynamic date range here ?
ssb.aggregation(rangeAgg);
ssb.aggregation(termAgg);
I am not sure of what data format the responseCode is stored as. I want to get a hold of the queries before I go further. Kindly answer the comment section in the code. kindly suggest.