2016-08-31 3 views
0

Jedes Mal, wenn ich eine Abfrage auf Solr ausführen, auch die einfache Abfrage *:*, erhalte ich die FehlermeldungSolrJ ungültig content-type

Exception in thread "main" org.apache.solr.client.solrj.SolrServerException: Error executing query 
at org.apache.solr.client.solrj.request.QueryRequest.process(QueryRequest.java:100) 
at org.apache.solr.client.solrj.SolrServer.query(SolrServer.java:301) 
at com.atmire.dspace.versioning.ModificationLogger.search(ModificationLogger.java:294) 
at com.atmire.dspace.versioning.ModificationsReporter.main(ModificationsReporter.java:92) 
Caused by: org.apache.http.ParseException: Invalid content type: 
at org.apache.http.entity.ContentType.parse(ContentType.java:233) 
at org.apache.solr.client.solrj.impl.HttpSolrServer.executeMethod(HttpSolrServer.java:496) 
at org.apache.solr.client.solrj.impl.HttpSolrServer.request(HttpSolrServer.java:210) 
at org.apache.solr.client.solrj.impl.HttpSolrServer.request(HttpSolrServer.java:206) 
at org.apache.solr.client.solrj.request.QueryRequest.process(QueryRequest.java:91) 
... 3 more 

Obwohl die gleiche Abfrage läuft gut gegen bei Verwendung des Webclient oder mit curl:

curl http://localhost:8080/solr/versioning/select\?q\=\*%3A\*\&wt\=json\&indent\=true

ich bin ganz verwirrt, warum die Abfrage von Java nicht funktionieren würde. Der entsprechende Java-Code

SolrQuery query = new SolrQuery().setQuery("*:*"); 
    query.setRows(rpp).setStart(start); 
    QueryResponse queryResponse = solr.query(query); 
    return queryResponse.getResults(); 

Es scheint, dass SolrQuery noch solr die Möglichkeit, die Content-Type auf ausdrücklich festgelegt, zumindest nicht, dass ich in der API-Dokumentation zu finden. Außerdem bin ich ziemlich überrascht, dass ich, wenn ich den Content-Type verwenden müsste, tatsächlich mit curl arbeiten kann, auch wenn ich nicht wt=json hinzufüge. Obwohl ich vermute, dass das für die Antwort ist, nicht die Anfrage.

+1

Haben Sie überprüft, ob das Solr-Protokoll auf der Server-Seite (und nicht für Solr) einen Fehler erzeugt? Dies kann passieren, wenn SolrJ nicht wie erwartet eine binäre Antwort erhält (SolrJ verwendet serialisierte POJOs IIRC). Das Solr-Protokoll sollte Ihnen auch genau zeigen, welche Anfrage Solr von SolrJ erhalten hat. – MatsLindh

+0

Möchten Sie den Teil Ihres Codes hinzufügen, wie der 'Server' erstellt wird? Wahrscheinlich verwenden Sie etwas eingebettetes, aber Sie zielen auf etwas Remote. – cheffe

Antwort

1

Es sieht so aus, als ob es nicht wirklich auf den Solr-Server zeigt. Können Sie Ihren früheren Code überprüfen, um zu sehen, ob Sie definitiv den richtigen Host und Port (der nicht für Sie Standard ist) einstellen, sowie die richtige Sammlung.