GAE/Goからelasticsearchへ接続する
クライアントライブラリの選定
以上の2つが候補としてあげられます。どちらかというとGoらしく書ける印象だった2つ目のolivere/elasticを今回は使用します。
クライアントの生成
olivere/elasticは使用しているelasticsearchのバージョンごとにライブラリのブランチも切られています。
今回はelasticsearchバージョン5を使用しているので、gopkg.in/olivere/elastic.v5をimportして使用します。
import ( elastic "gopkg.in/olivere/elastic.v5" "google.golang.org/appengine/urlfetch" ) const ESURL = "https://35.174.182" func main(){ c := context.Background httpCli := urlfetch.Client(c) // URL Fetch Serviceの使用 cli, err := elastic.NewClient(elastic.SetURL(ESURL), elastic.SetHttpClient(httpCli)) // clientの生成 if err != nil { panic(err) } }
NewClient(options ...ClientOptionFunc) (*Client, error)を呼び出すことによってクライアントを生成します。
ClientOptionFunc型の値を引数に与えることによってクライアントの設定を行います。
URL Fetch Service
GAE/Goから外部にリクエストを送る場合は、URL Fetch Serviceを使用します。
そのため、NewClient時にHTTPクライアントをurlfetch.Clientに差し替える必要があります。
操作
先程生成したクライアントを使用してelasticsearchのデータを操作していきます。
詳しくはwikiを参照して下さい。
func main(){ cli.Start() defer cli.Stop() // ドキュメントの追加 _, err := cli.Index(). Index("index"). Type("type"). Id("id"). BodyJson(struct{}). Do(c) // ドキュメントの削除 _, err := cli.Delete(). Index("index"). Type("type"). Id("id"). Do(c) }