Здраствуйте, я пытаюсь создать QueryBuilder
По аналагии Mysql
WHERE (domaindId AND ((userId AND date_rage) or (userId AND date_rage) or ...)
DateFormat formatter = new SimpleDateFormat(DATE_FORMAT);
formatter.setTimeZone(TimeZone.getTimeZone("UTC"));
BoolQueryBuilder queryBuilder = QueryBuilders
.boolQuery()
.must(termQuery(DOMAIN_ID, request.getDomainId()));
for (UserActivityPeriod u : request.getUserPeriods()) {
queryBuilder
.must(QueryBuilders.boolQuery()
.should(QueryBuilders.boolQuery()
.must(termQuery(USER_ID, u.getUserId()))
.must(rangeQuery(DATE)
.gte(formatter.format(u.getPeriod().getFromDate()))
.lte(formatter.format(u.getPeriod().getEnd()))
.format(DATE_FORMAT))));
}
Вот результат QueryBuilder
{
"bool" : {
"must" : [
{
"term" : {
"domainId" : {
"value" : 7,
"boost" : 1.0
}
}
},
{
"bool" : {
"should" : [
{
"bool" : {
"must" : [
{
"range" : {
"date" : {
"from" : "2017-12-05",
"to" : "2017-12-05",
"include_lower" : true,
"include_upper" : true,
"format" : "yyyy-MM-dd",
"boost" : 1.0
}
}
}
],
"disable_coord" : false,
"adjust_pure_negative" : true,
"boost" : 1.0
}
}
],
"disable_coord" : false,
"adjust_pure_negative" : true,
"boost" : 1.0
}
},
{
"bool" : {
"should" : [
{
"bool" : {
"must" : [
{
"range" : {
"date" : {
"from" : "2017-12-06",
"to" : "2017-12-06",
"include_lower" : true,
"include_upper" : true,
"format" : "yyyy-MM-dd",
"boost" : 1.0
}
}
}
],
"disable_coord" : false,
"adjust_pure_negative" : true,
"boost" : 1.0
}
}
],
"disable_coord" : false,
"adjust_pure_negative" : true,
"boost" : 1.0
}
}
],
"disable_coord" : false,
"adjust_pure_negative" : true,
"boost" : 1.0
}
}
Запрос не выполняеться если не обернуть его в обьект query.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости