使用@Query在ElasticSearch中设置大小

时间:2016-11-16 06:30:08

标签: java elasticsearch jpql

我正在使用@query通过JPQL检索elasticsearch数据。默认大小是10,我在@Query中提到了5的大小,但我得到10条记录,但我需要5条记录。如何解决这个问题

 @Query("\"from\":\"0\",\"size\":\"5\",{\"bool\":{\"must\":[{\"term\":{\"brand\":\"?0\"}}]}}}")

列出findByBrand(String brand);

2 个答案:

答案 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。