Эластичный счетчик репо Spring-Data с пользовательской аннотацией @Query не работает «Ожидается 1, но найдено 30 результатов» - PullRequest
0 голосов
/ 22 мая 2019

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

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

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

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

1 Ответ

1 голос
/ 23 мая 2019

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

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

...