Spring-带有自定义@Query 注释的数据弹性搜索回购计数不起作用"Expected 1 but found 30 results"

Spring-Data elastic search repo count with custom @Query annotation not working "Expected 1 but found 30 results"

对于我的应用程序,我必须对弹性执行自定义计数,我想在我们使用的 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 中是否有类似的解决方案?

我可以使用弹性客户端或模板来执行自定义查询并获得结果,但如果可能的话,我更喜欢为此使用现有的存储库界面。

不,目前不可能。 ElasticsearchStringQuery class 检查使用 @Query 注解的方法的 return 类型,然后执行适合该方法的 ElasticsearchOperations.queryFor...() 方法 return类型。这些是对数据而非计数的查询。

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