Elasticsearch combining filters

294
12 декабря 2017, 19:07

Здраствуйте, я пытаюсь создать 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.

READ ALSO
StreamCorruptedException при Сериализации

StreamCorruptedException при Сериализации

Есть класс(Example) который реализует интерфейс Serializable

275
Настройка log4j2 для потоков

Настройка log4j2 для потоков

Есть класс Test, потомок ThreadКак мне настроить log4j2 что бы для каждого потока Test создавался свой лог файл

277
Как правильно передать координаты в Google Maps?

Как правильно передать координаты в Google Maps?

Пытаюсь геокодировать адрес переменной adr в координаты с долготой и шириной и отобразить метку на картеЗапускаю приложение

293
как инициализировать 5-ти мерный массив?

как инициализировать 5-ти мерный массив?

Привет! Есть простой массив Object[] arr = new int[50] заполненный некими значениями, также есть другой массив Object[][][][][] fiveDArr, правда он 5-ти мерный, нужно...

304