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



对于我的应用程序,我必须对弹性进行自定义计数,我想在我们使用的lasticsearchcrudrepository中使用@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类检查用@Query注释注释的方法的返回类型,然后执行适合该方法返回类型的ElasticsearchOperations.queryFor...()方法。这些是数据的查询,而不是计数。

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

相关内容

最新更新