在ProductRepository extends ElasticsearchRepository<Product, String>
中,我有一个工作查询:
@Query("{"bool": {"
+ " "filter": ["
+ " {"term": {"CategoryID.keyword": {"value": "?0"}}},"
+ " {"terms": {"Name.keyword": ["Name_A","Name_B","Name_C"]}}"
+ " ]"
+ " }"
+ "}")
Stream<Product> findByCategoryIDAndNames(String categoryId, PageRequest pageRequest);
我需要在注释中不硬编码terms
值,而是作为方法的List<String>
参数。我找不到编写Query注释来查询名称集合的正确方法,例如:
@Query("{"bool": {"
+ " "filter": ["
+ " {"term": {"CategoryID.keyword": {"value": "?0"}}},"
+ " {"terms": {"Name.keyword": ["?1"]}}"
+ " ]"
+ " }"
+ "}")
Stream<Product> findByCategoryIDAndNames(String categoryId, List<String> names, PageRequest pageRequest);
编译和运行没有错误,但不能工作。
在Spring Data Elasticsearch文档中,我找不到一个如何做到这一点的例子。
Spring Data Elasticsearch version: 4.0.4
支持收集参数在2021年7月3日为分支4.3到4.1添加了PR #1856。4.0分支在2021年5月之前支持OSS,因此不再更新。