Счетчик репозиториев эластичного поиска Spring-Data с пользовательской аннотацией @Query не работает «Ожидается 1, но найдено 30 результатов»

Для моего приложения мне нужно выполнить пользовательский подсчет эластичности, я хочу использовать для этого аннотацию @Query в используемом нами ElasticsearchCrudRepository. Когда я использую следующую подпись:

@Query("CUSTOM BOOL QUERY HERE")
long countItemsCustom();

Это приводит к исключению java.lang.IllegalArgumentException: Expected 1 but found 30 results, поскольку выполняется как запрос, а не подсчет. Для spring-data-cassandra у нас есть специальная аннотация @CountQuery для решения этой проблемы. Есть ли подобное решение в spring-data-elasticsearch?

Я мог бы использовать эластичный клиент или шаблон для выполнения пользовательского запроса и получения результатов, но я предпочитаю использовать для этого существующий интерфейс репозитория, если это возможно.

Основы программирования на Java
Основы программирования на Java
Java - это высокоуровневый объектно-ориентированный язык программирования, основанный на классах.
Концепции JavaScript, которые вы должны знать как JS программист!
Концепции JavaScript, которые вы должны знать как JS программист!
JavaScript (Js) - это язык программирования, объединяющий HTML и CSS с одной из основных технологий Всемирной паутины. Более 97% веб-сайтов используют...
0
0
1 047
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Нет, это невозможно в данный момент. Класс ElasticsearchStringQuery проверяет тип возвращаемого значения метода, который помечен аннотацией @Query, а затем выполняет метод ElasticsearchOperations.queryFor...(), соответствующий типу возвращаемого значения метода. Это запросы для данных, а не для подсчета.

Я создал задачу в Spring Data Elasticsearch Jira, чтобы добавить эту функцию.

Другие вопросы по теме