我正在使用@query通过JPQL检索elasticsearch数据。默认大小是10,我在@Query中提到了5的大小,但我得到10条记录,但我需要5条记录。如何解决这个问题
@Query("\"from\":\"0\",\"size\":\"5\",{\"bool\":{\"must\":[{\"term\":{\"brand\":\"?0\"}}]}}}")
列出findByBrand(String brand);
答案 0 :(得分:1)
您只需在findByBrand
方法中添加Pageable
argument:
@Query("{\"bool\":{\"must\":[{\"term\":{\"brand\":\"?0\"}}]}}")
List findByBrand(String brand, Pageable pageable);
然后你可以像这样调用这个方法:
List brands = findByBrand("mybrand", new PageRequest(0, 5));
或者,您也可以在the method name itself中指定所需的结果数量:
List brands = findTop5ByBrand(String brand);
答案 1 :(得分:0)
我想问题在于@Query注释。 仅生成"查询"节点。 你会期望有这样的查询。
{
"from": "0",
"size": "5",
"query": {
"bool": {
"must": [
{
"term": {
"brand": "?0"
}
}
]
}
}
}
因此,你无法从"和"尺寸"在查询字符串中。这就是为什么在其他答案中你必须使用Pageable来获得结果。 问题中的@Query字符串不是json字符串。 它错过了"查询":之前" bool"适当的json。