Spring 带排序的数据 Elasticsearch 通配符查询
Spring Data Elasticsearch wildcard query with sort
我为 elasticsearch 写了一个搜索查询:
{
"query": {
"query_string": {
"fields": ["studentName", "countryName"],
"query" : "*o*"
}
},
"sort" : [{
"studentName" : { "order": "desc" }
}]
}
这是为 localhost:9200/myindex/mytype/_search
(POST) 执行的。
我根据 query
得到了正确的结果,这些结果是根据 sort
部分排序的。但是当我将其转换为 Spring 数据查询时,如:
@Query("{ \"query\": { \"query_string\" : { \"fields\" : [\"studentName\", \"countryName\"], \"query\":\"*?0*\"}}," +
" \"sort\" : [{ \"?1\" : { \"order\": \"?2\" }}]}")
Page<Student> freeTextSearchPortSort(String freeText, String sortBy, String sortOrder, Pageable pageable);
我总是得到相同的结果,按插入顺序排序。我需要做哪些不同的事情?
您需要创建 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)
希望对您有所帮助!!
我为 elasticsearch 写了一个搜索查询:
{
"query": {
"query_string": {
"fields": ["studentName", "countryName"],
"query" : "*o*"
}
},
"sort" : [{
"studentName" : { "order": "desc" }
}]
}
这是为 localhost:9200/myindex/mytype/_search
(POST) 执行的。
我根据 query
得到了正确的结果,这些结果是根据 sort
部分排序的。但是当我将其转换为 Spring 数据查询时,如:
@Query("{ \"query\": { \"query_string\" : { \"fields\" : [\"studentName\", \"countryName\"], \"query\":\"*?0*\"}}," +
" \"sort\" : [{ \"?1\" : { \"order\": \"?2\" }}]}")
Page<Student> freeTextSearchPortSort(String freeText, String sortBy, String sortOrder, Pageable pageable);
我总是得到相同的结果,按插入顺序排序。我需要做哪些不同的事情?
您需要创建 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)
希望对您有所帮助!!