首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Clj-http在尝试连接到elasticsearch时抛出错误?

Clj-http在尝试连接到elasticsearch时抛出错误?
EN

Stack Overflow用户
提问于 2017-12-13 05:39:10
回答 1查看 417关注 0票数 1
代码语言:javascript
复制
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) 

索引尚未创建,这可能是导致它的代码。

代码语言:javascript
复制
(esi/create conn index-name :settings settings :mappings mappings)

在elasticsearch:1.7中,它工作得很好,但在较新的版本6.0 clj-http中,它失败了。

EN

回答 1

Stack Overflow用户

发布于 2018-02-13 12:51:49

在Elasticsearch 6.0+中,客户端需要发送一个PUT /myindex请求来显式地创建索引,而不仅仅是POST /myindex。您正在使用的ES客户端似乎需要更新。

您可以从响应的正文中看到:

代码语言:javascript
复制
"Incorrect HTTP method for uri [/slack_lens_20160820] and method [POST], allowed: [GET, PUT, HEAD, DELETE]"

不允许使用POST,您需要使用其他谓词。您可以通过执行以下操作来确认它是否正常工作:

代码语言:javascript
复制
(require '[clj-http.client :as http])
(http/put "http://localhost:9200/slack_lens_20160820")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47781990

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档