Spring Data Elasticsearch custom @Query с более чем 10 параметрами - PullRequest
0 голосов
/ 29 октября 2018

Я использую spring-boot-starter-data -asticsearch 2.1.0.RC1.

У меня есть пользовательский запрос (через аннотацию @Query), где я хочу передать 11 параметров. Запрос выглядит так:

{
      "bool" : {
        "must" : [
          {
            "range" : {
              "attribute0" : { "gte" : ?0, "lte" : ?1 }
            }
          },
          {
            "range" : {
              "attribute1" : { "gte" : ?2, "lte" : ?3 }
            }
          },
          {
            "term": { "attribute2": "?4" }
          },
          {
            "term": { "attribute3": "?5" }
          },
          {
            "term": { "attribute4": "?6" }
          },
          {
            "term": { "attribute5": "?7" }
          },
          {
            "term": { "attribute6": "?8" }
          },
          {
            "term": { "attribute7": "?9" }
          },
          {
            "term": { "attribute8": "?10" }
          }
        ]
      }
    }

В моем хранилище это выглядит так:

@Query("{\"bool\":{\"must\":[{\"range\":{\"attribute0\":{\"gte\":?0,\"lte\":?1}}},{\"range\":{\"attribute1\":{\"gte\":?2,\"lte\":?3}}},{\"term\":{\"attribute2\":\"?4\"}},{\"term\":{\"attribute3\":\"?5\"}},{\"term\":{\"attribute4\":\"?6\"}},{\"term\":{\"attribute5\":\"?7\"}},{\"term\":{\"attribute6\":\"?8\"}},{\"term\":{\"attribute7\":\"?9\"}},{\"term\":{\"attribute8\":\"?10\"}}]}}")
Page<Entity> findAllByAttributes(
          Integer param0, Integer param1, 
          Integer param2, Integer param3, 
          String param4, String param5,
          String param6, String param7,
          String param8, String param9,
          String param10, Pageable pageable);

Проблема в том, что я не могу использовать более 10 параметров (однозначный индекс от 0 до 9). заполнитель? 10 разрешается заполнителю 1 с добавлением нуля .

Я не могу найти в справочной документации Spring Data Elasticsearch ничего о каких-либо ограничениях в количестве параметров.

Как я могу передать более 10 параметров в @Query?

1 Ответ

0 голосов
/ 24 марта 2019

У меня тоже есть эта проблема. Я отправлю сообщение об ошибке.

Бедняжка исправить попробуйте использовать нумерацию как? 00,? 01,? 02

Копаясь в коде, проблема не в регулярном выражении, а в команде замены, замеченной здесь

result.replace(group, getParameterWithIndex(accessor, index));

, который, конечно, заменит все и думает, что ?1 необходимо заменить как в ?1, так и ?10

...