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.
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
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