私は比較的新しくなっています。現在、弾性検索でレコードを検索しようとしています。これまでに作成した基本的なコードは、これまで単純な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への呼び出しを見ると、1つのパラメータ、URLがあります。動作していないサンプルでは、有効なURLは渡していません。あなたはカールに渡すものを渡していますが、これは同じものではありません。 URLに '-d'のようなフラグはありません。 – Adrian