Können Sie POST verwenden, um eine Abfrage in Solr auszuführen (/ select)?

8

Ich habe Abfragen, die ich gegen out solr Index ausgeführt habe, die manchmal sehr lange Abfrageparameter haben, bekomme ich Fehler, wenn ich diese Abfragen ausführen, die ich bis zum Limit eines GET-Abfrage-Parameters tun werde.

Hier ist die Methode, die ich verwende, um (JSON) abzufragen, das ist zu zeigen, dass ich die Http Extensions verwende (der Client, den ich verwende, ist ein dünner Wrapper für HttpClient), keine End-to-End-Lösung. 90% der Abfragen laufen gut, gerade wenn die Parameter groß sind, bekomme ich den 500 Fehler von solr. Ich habe irgendwo gelesen, dass Sie POSTs verwenden können, wenn Sie den Befehl select ausführen, haben aber keine Beispiele dafür gefunden. Jede Hilfe wäre fantastisch!

%Vor%     
RyanFetz 08.06.2010, 11:56
quelle

3 Antworten

12
  1. Geh nicht davon aus. Überprüfen Sie das Solr-Protokoll, um den Grund für diesen Fehler zu bestätigen.
  2. / select akzeptiert POST-Anfragen ohne Probleme. Sie können dies mit curl versuchen:

    %Vor%

    Ich kann XmlHttpServiceClient nicht kommentieren, da es sich um proprietären Code zu handeln scheint, aber siehe diese Seite für ein Beispiel von POSTing mit HttpWebRequest.

Übrigens: Es gibt .net-Bibliotheken, die die Kommunikation mit Solr implementieren, keine Notwendigkeit, eigene zu rollen, es sei denn, Sie haben einige sehr seltsame Anforderungen.

    
Mauricio Scheffer 08.06.2010 14:43
quelle
4

Achten Sie darauf, Inhaltstyp: application / x-www-form-urlencoded zu setzen, sonst erhalten Sie den Statuscode 500.

Curl macht das standardmäßig.

Es würde mich nicht überraschen, wenn Ihr XmlHttpServiceClient fest codiert wäre / defaultiert, text / xml als Inhaltstyp zu verwenden. HttpWebRequest ist geeigneter.

    
Jacob Wu 26.04.2011 22:03
quelle
0

Solr unterstützt HTTP GET und HTTP POST.

Legen Sie den Inhaltstyp beim HTTP-POST richtig fest. Sie können es mit Postman oder Fiddler überprüfen.

Korrekter Inhaltstyp:  Inhaltstyp: application / x-www-form-urlencoded.

Ohne den richtigen Inhaltstyp erhalten Sie die Fehlermeldung als : Der Remote-Server hat einen Fehler zurückgegeben: (400) Ungültige Anforderung

    
Bishnubrata Panigrahi 23.11.2016 06:52
quelle

Tags und Links