我試圖發出查詢,其中包括從Hibernate搜索5.7.1.Final
排序 ElasticSearch 2.4.2
。「過濾的查詢不支持排序」當使用休眠搜索
當我使用curl我得到的結果:
curl -XPOST 'localhost:9200/com.example.app.model.review/_search?pretty' -d '
{
"query": { "match" : { "authors.name" : "Puczel" } },
"sort": { "title": { "order": "asc" } }
}'
但是,當我發出從代碼查詢:
protected static Session session;
public static void prepareSession()
{
SessionFactory sessionFactory = new Configuration().configure()
.buildSessionFactory();
session = sessionFactory.openSession();
}
...
protected static void testJSONQueryWithSort()
{
FullTextSession fullTextSession = Search.getFullTextSession(session);
QueryDescriptor query = ElasticsearchQueries.fromJson(
"{ 'query': { 'match' : { 'authors.name' : 'Puczel' } }, 'sort': { 'title': { 'order': 'asc' } } }");
List<?> result = fullTextSession.createFullTextQuery(query, Review.class).list();
System.out.println("\n\nSearch results for 'author.name:Puczel':");
for(Object object : result)
{
Review review = (Review) object;
System.out.println(review.toString());
}
}
我得到一個異常:
"[filtered] query does not support [sort]"
我知道它來自哪裏,因爲Hibernate Search問題的查詢 與我的不同查詢 - 指定類型是不同的實現:
{
"query":
{
"filtered":
{
"query":
{
"match":{"authors.name":"Puczel"}
},
"sort":{"title":{"order":"asc"}},
"filter":{"type":{"value":"com.example.app.model.Review"}}
}
}
}
但我不知道如何去改變它。
我嘗試使用Hibernate文檔中的排序例如: https://docs.jboss.org/hibernate/search/5.7/reference/en-US/html_single/#__a_id_elasticsearch_query_sorting_a_sorting
但這個例子並不完全。我不知道:
- 其中進口使用(有多個匹配),
- 哪些類型的未聲明的變量,像
s
, - 如何initalise變量
luceneQuery
。
我會很感激這方面的評論。
非常感謝(再次!)。我對此有些困惑,我認爲我不能在ElasticSearch中使用'LuceneQuery',但是我仍然試圖去做,所以沒有閱讀整章,我現在所做的就沒有多少意義。我使用你的答案修復了我的代碼,現在我更好地理解了這個問題。謝謝! – nuoritoveri