[英]Clj-http is throwing error when trying to connect to the elasticsearch?
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)
尚未創建索引,可能是導致索引的代碼。
(esi/create conn index-name :settings settings :mappings mappings)
而且在elasticsearch:1.7中,它工作正常,但是在更新的版本6.0 clj-http中,它失敗了。
在Elasticsearch 6.0+中,客戶端需要發送PUT /myindex
請求以顯式創建索引,而不僅僅是POST /myindex
。 看來您正在使用的ES客戶端需要更新。
您可以從響應的正文中看到:
"Incorrect HTTP method for uri [/slack_lens_20160820] and method [POST], allowed: [GET, PUT, HEAD, DELETE]"
不允許使用POST
,您需要使用其他動詞。 您可以通過執行以下操作來確認它是否有效:
(require '[clj-http.client :as http])
(http/put "http://localhost:9200/slack_lens_20160820")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.