go 操作 ElasticSearch

go 操作ES并不像 python 那么直观,需要使用很多的 struct 和 函数,感觉没有 python 的 dict 好用。本文以v5版本为例说明。

建立连接

1
2
3
import "gopkg.in/olivere/elastic.v5"

client, err := elastic.NewClient(elastic.SetURL("http://192.168.1.100:9296"))

查看dsl 语句

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import (
"encoding/json"

"gopkg.in/olivere/elastic.v5"
)

query := elastic.NewBoolQuery()
query = query.Must(elastic.NewTermQuery("user", "olivere"))
query = query.Filter(elastic.NewTermQuery("account", 1))
src, err := query.Source()
if err != nil {
panic(err)
}

data, err := json.MarshalIndent(src, "", " ")
if err != nil {
panic(err)
}
fmt.Println(string(data))

// Output:
// {
// "bool": {
// "filter": {
// "term": {
// "account": 1
// }
// },
// "must": {
// "term": {
// "user": "olivere"
// }
// }
// }
// }