使用库(olivere/elastic/v7)操作es
1、初始化es操作客户端
var err error
EsClient, err = elastic.NewClient(
elastic.SetSniff(false),
elastic.SetURL(hosts...),
elastic.SetBasicAuth(username, password),
elastic.SetTraceLog(new(tracelog)),//打印查询语句,调试时可以使用
)
if err != nil {
zap.L().Error(err.Error())
}
type tracelog struct{}
func (tracelog) Printf(format string, v ...interface{}) {
fmt.Printf(format, v...)
}
2、使用must查询数据
query := elastic.NewBoolQuery()
query.Must(elastic.NewTermQuery(查询字段, 查询值)
res, err := EsClient.Search().Index(index).Query(query).From(0).Size(10).Do(context.Background())
if err != nil {
return nil, err
}
if res == nil || res.Hits == nil {
return nil, nil
}
rows := make([]map[string]interface{}, 0)
for _, hit := range res.Hits.Hits {
var item = make(map[string]interface{})
jsonByte, marErr := hit.Source.MarshalJSON()
if marErr == nil {
err := json.Unmarshal(jsonByte, &item)
if err != nil {
return nil, err
}
rows = append(rows, item)
}
}
3、terms、matchPhraseQuery、rangeQuery文章来源:https://www.toymoban.com/news/detail-510053.html
elastic.NewMatchPhraseQuery
elastic.NewRangeQuery(字段).Gte(值).Lte(值)
elastic.NewTermQuery(字段, 值)
4、查询后,根据字段排序文章来源地址https://www.toymoban.com/news/detail-510053.html
sortQuery := elastic.NewFieldSort(orderField + ".keyword")
if sortType == "asc" {
sortQuery = sortQuery.Asc()
} else {
sortQuery = sortQuery.Desc()
}
res, err := EsClient.Search().Index(index).Query(query).From(0).Size(10).SortBy(sortQuery).Do(context.Background())
到了这里,关于golang语言中简单操作es几个例子的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!