Elasticsearch combining filters

266
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

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

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

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

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

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

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

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

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

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

266