Ich versuche, eine Abfrage zu erteilen, die von Hibernate Search 5.7.1.Final
Elasticsearch 2.4.2
umfasst das Sortieren.„gefilterten Abfrage nicht unterstützt sortieren“, wenn Hibernate Search mit
Wenn ich curl bin mit erhalte ich die Ergebnisse:
curl -XPOST 'localhost:9200/com.example.app.model.review/_search?pretty' -d '
{
"query": { "match" : { "authors.name" : "Puczel" } },
"sort": { "title": { "order": "asc" } }
}'
Aber wenn ich die Abfrage von Code ausgeben:
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());
}
}
Ich erhalte eine Ausnahme:
"[filtered] query does not support [sort]"
Ich verstehe, wo es herkommt, weil die Abfrage , die Hibernate Search Probleme unterscheidet, als meineistAbfrage - Angabe des Typs realisiert anders:
{
"query":
{
"filtered":
{
"query":
{
"match":{"authors.name":"Puczel"}
},
"sort":{"title":{"order":"asc"}},
"filter":{"type":{"value":"com.example.app.model.Review"}}
}
}
}
Aber ich weiß nicht, wie es zu ändern.
Ich versuchte, die Art Beispiel von Hibernate Dokumentation mit: https://docs.jboss.org/hibernate/search/5.7/reference/en-US/html_single/#__a_id_elasticsearch_query_sorting_a_sorting
Aber das Beispiel ist nicht voll. Ich weiß nicht:
- , die (es gibt mehrere Matching) zu verwenden, importiert,
- was die Typen der nicht deklarierten Variablen sind, wie
s
, - wie die Variable
luceneQuery
initalise.
Ich werde alle Anmerkungen zu diesem zu schätzen wissen.
Vielen Dank (wieder!). Ich war ein bisschen verwirrt darüber, ich dachte, dass ich 'LuceneQuery' nicht mit ElasticSearch verwenden kann, aber dann versuchte ich es trotzdem, also hatte es keinen Sinn, das ganze Kapitel zu lesen, was ich jetzt tat. Ich habe meinen Code mit Ihrer Antwort korrigiert und jetzt verstehe ich das Thema besser. Vielen Dank! – nuoritoveri