排序为

时间:2017-06-27 10:47:48

标签: sorting elasticsearch spring-data-elasticsearch

我为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);

我总是得到相同的结果,按插入顺序排序。我需要做些什么不同的事情?

1 个答案:

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

希望这会有所帮助!!