我为elasticsearch写了一个搜索查询:
{
"query": {
"query_string": {
"fields": ["studentName", "countryName"],
"query" : "*o*"
}
},
"sort" : [{
"studentName" : { "order": "desc" }
}]
}
这是针对localhost:9200/myindex/mytype/_search
(POST)执行的。
我根据基于query
部分排序的sort
获得了正确的结果。但是,当我将其转换为Spring Data Query时,如:
@Query("{ \"query\": { \"query_string\" : { \"fields\" : [\"studentName\", \"countryName\"], \"query\":\"*?0*\"}}," +
" \"sort\" : [{ \"?1\" : { \"order\": \"?2\" }}]}")
Page<Student> freeTextSearchPortSort(String freeText, String sortBy, String sortOrder, Pageable pageable);
我总是得到相同的结果,按插入顺序排序。我需要做些什么不同的事情?
答案 0 :(得分:0)
您需要创建PageRequest,其中包含一个带有页面,大小,方向和属性的构造函数。 PageRequest实现了Pageable
接口。
您的查询如下:
@Query("{ \"query\": { \"query_string\" : { \"fields\" : [\"studentName\", \"countryName\"], \"query\":\"*?0*\"}}")
Page<Student> freeTextSearchPortSort(String freeText, Pageable pageable);
调用此位置的位置如下所示。
PageRequest pageRequest = new PageRequest(0, no_of_rec_to_be_fetched, Sort.Direction.fromString("desc"), "studentName")
freeTextSearchPortSort ("someText",pageRequest)
希望这会有所帮助!!