带有自定义@Query注释的Spring-Data弹性搜索回购计数不起作用“预期1,但找到30个结果”

时间:2019-05-22 14:35:18

标签: java spring spring-boot spring-data spring-data-elasticsearch

对于我的应用程序,我必须对弹性执行自定义计数,我想在我们使用的ElasticsearchCrudRepository中为此使用@Query批注。当我使用以下签名时:

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

这会导致java.lang.IllegalArgumentException: Expected 1 but found 30 results异常,因为它是作为查询而不是计数执行的。对于spring-data-cassandra,我们有一个特殊的@CountQuery批注来解决此问题。在spring-data-elasticsearch中有类似的解决方案吗?

我可以使用弹性客户端或模板执行自定义查询并获取结果,但是如果可能的话,我更喜欢使用现有的存储库接口。

1 个答案:

答案 0 :(得分:0)

否,目前无法实现。 ElasticsearchStringQuery类检查用@Query批注注释的方法的返回类型,然后执行适合于该方法的返回类型的ElasticsearchOperations.queryFor...()方法。这些是查询数据而不是计数。

我在Spring Data Elasticsearch Jira中创建了一个问题,以添加此功能。