对于我的应用程序,我必须对弹性进行自定义计数,我想在我们使用的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中创建了一个问题,以添加此功能。