【发布时间】:2021-10-19 23:28:21
【问题描述】:
在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 documentation 我找不到如何执行此操作的示例。
Spring Data Elasticsearch 版本:4.0.4
【问题讨论】:
-
我认为您可以使用 org.elasticsearch.index.query.BoolQueryBuilder 并尝试代替注释,但需要自定义实现
标签: java spring-data spring-data-elasticsearch