2017-06-27 23 views
0

春数据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); 

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

回答

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) 

希望这有助于!

+0

这是我正在做的错误。非常感谢。 –

+0

乐意帮忙... – Richa

+0

我刚刚注意到查询无法对文本和数字进行排序。在我的一些输入中,我有像'-'和'('这样的字符,它们可以被管理吗? –