我對Go比較陌生,目前我試圖在彈性搜索中搜索記錄,下面是我創建的基本代碼,到目前爲止我能夠執行一個簡單的GET請求「http://10.132.0.13:9200/ 「並按預期返回結果。但是,一旦我嘗試運行稍微複雜的GET請求,它就會失敗。用Golang搜索Elasticsearch
以下是我迄今爲止創建的代碼。
package main
import (
"fmt"
"io/ioutil"
"net/http"
)
func main() {
//request, err := http.Get(`http://10.132.0.13:9200/`) // this just returns the test page
request, err := http.Get(`http://10.132.0.13:9200/database-*/_search?pretty -d { "query": { "match": {"_all": "searchterm"}}}`)
if err != nil {
//error
}
defer request.Body.Close()
body, err := ioutil.ReadAll(request.Body)
fmt.Println(string(body))
}
我可以使用捲曲-xget直接查詢索引,並返回預期的結果
有沒有實現golang類似的捲曲-xget的方法嗎?
獲取請求通常不會提交數據。郵政和放置請求。 http://stackoverflow.com/questions/8498371/curl-get-and-x-get – reticentroot
儘管用GET請求發送主體並不常見,但它是完全有效的,沒有理由不這樣做。如果您只讀取數據並且不更改/添加數據GET是正確的選擇,而POST將是錯誤的。 Elastic使用GET進行查詢,對於更復雜的查詢,它使用來自GET請求主體的數據。 – Christian
如果你看看你對http.Get的調用,它有一個參數,URL。在您的非工作示例中,您未傳遞有效的網址;你傳遞了你會傳遞給捲曲的東西,這不是一回事。網址沒有像「-d」這樣的標誌。 – Adrian