2017-12-12 1 views
0
Exception in thread "main" clojure.lang.ExceptionInfo: clj-http: status 405 
{:status 405, 
:headers {"Allow" "GET,PUT,HEAD,DELETE", "content-type" "application/json; charset=UTF-8", "content-length" "146"}, 
:body "{\"error\":\ 
"Incorrect HTTP method for uri [/slack_lens_20160820] and method [POST], allowed: [GET, PUT, HEAD, DELETE]\",\"status\":405}", 
:request-time 244, :trace-redirects ["http://127.0.0.1:9200/slack_lens_20160820"], 
:orig-content-encoding "gzip"}, compiling:(/tmp/form-init1822303649317959720.clj:1:73) 
     at clojure.lang.Compiler.load(Compiler.java:7239)                        
     at clojure.lang.Compiler.loadFile(Compiler.java:7165)                       
     at clojure.main$load_script.invoke(main.clj:275)                         
     at clojure.main$init_opt.invoke(main.clj:280)                         
     at clojure.main$initialize.invoke(main.clj:308)                         
     at clojure.main$null_opt.invoke(main.clj:343)                         
     at clojure.main$main.doInvoke(main.clj:421)                          
     at clojure.lang.RestFn.invoke(RestFn.java:421)                         
     at clojure.lang.Var.invoke(Var.java:383)                           
     at clojure.lang.AFn.applyToHelper(AFn.java:156)                         
     at clojure.lang.Var.applyTo(Var.java:700)                          
     at clojure.main.main(main.java:37) 

Der Index ist noch nicht erstellt, der Code, der es verursacht haben könnte.Clj-http wirft einen Fehler beim Versuch, sich mit dem Elasticsearch zu verbinden?

Und in elasticsearch: 1.7 es funktionierte gut, aber mit der neueren Version 6.0 clj-http es scheitert.

Antwort

0

In Elasticsearch 6.0+ muss der Client eine PUT /myindex Anfrage senden, um explizit einen Index zu erstellen, anstatt nur eine POST /myindex. Es scheint, dass der ES-Client, den Sie verwenden, aktualisiert werden muss.

Sie können aus dem Körper der Antwort sehen:

"Incorrect HTTP method for uri [/slack_lens_20160820] and method [POST], allowed: [GET, PUT, HEAD, DELETE]" 

Die POST nicht erlaubt ist, müssen Sie ein anderes Verb verwenden. Sie können bestätigen, dass es funktioniert:

(require '[clj-http.client :as http]) 
(http/put "http://localhost:9200/slack_lens_20160820") 
Verwandte Themen