Python卷曲到弹性搜索问题

时间:2017-06-15 00:06:56

标签: python curl elasticsearch kibana elastic-stack

我试图在python中使用curl在Elastic搜索中推送此命令,以便在代码完成后创建索引模式

        import pycurl
        import urllib
        import urllib2
        apiURL = 'http://localhost:9200/.kibana/index-pattern/james+_alerts* -d'
        c = pycurl.Curl()
        c.setopt(c.URL, apiURL)
        c.setopt(c.POSTFIELDS, '{"title" : james+"_alerts*",  "timeFieldName": "timeStamp"}')
        c.setopt(c.VERBOSE, True)
        c.perform()     
        c.close()

返回的输出是: -

*   Trying 127.0.0.1...
* TCP_NODELAY set
* Connected to localhost (127.0.0.1) port 9200 (#0)
> POST /.kibana/index-pattern/james+_alerts* -d HTTP/1.1
Host: localhost:9200
User-Agent: PycURL/7.43.0 libcurl/7.52.1 GnuTLS/3.5.6 zlib/1.2.11 libidn2/0.16 libpsl/0.17.0 (+libidn2/0.16) librtmp/2.3
Accept: */*
Content-Length: 56
Content-Type: application/x-www-form-urlencoded

* upload completely sent off: 56 out of 56 bytes
* HTTP 1.0, assume close after body
< HTTP/1.0 400 Bad Request
< content-type: application/json; charset=UTF-8
< content-length: 207
< 
* Curl_http_done: called premature == 0
* Closing connection 0
{"error":{"root_cause":[{"type":"illegal_argument_exception","reason":"invalid version format: -D HTTP/1.1"}],"type":"illegal_argument_exception","reason":"invalid version format: -D HTTP/1.1"},"status":400}

可能存在哪些问题并解决此问题?

1 个答案:

答案 0 :(得分:2)

你在apiURL中有额外的'-d'。我猜它来自命令行的copy&amp; paste。如果没有,那么你必须编码url(urllib.urlencode)