千家信息网

elasticsearch3中golang怎么用

发表于:2024-12-12 作者:千家信息网编辑
千家信息网最后更新 2024年12月12日,这篇文章主要介绍elasticsearch3中golang怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!package mainimport ( "cont
千家信息网最后更新 2024年12月12日elasticsearch3中golang怎么用

这篇文章主要介绍elasticsearch3中golang怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

package mainimport (        "context"        "fmt"        "github.com/olivere/elastic"        "reflect"        "time")var (        esUrl = "http://s100:9200"        ctx   = context.Background())type User struct {        Name string `json:"name"`        Age  int    `json:"age"`}func main() {        // 链接服务器        client, err := elastic.NewClient(                elastic.SetSniff(false),                elastic.SetURL(esUrl),                elastic.SetHealthcheckInterval(10*time.Second),                elastic.SetMaxRetries(5),        )        if err != nil {                panic(err.Error())        }        // 获取基本信息        info, code, err := client.Ping(esUrl).Do(ctx)        if err != nil {                panic(err.Error())        }        fmt.Println(">>es-info>>", info.Version.Number, code)        client.Delete().Index("user")        // 是否存在索引        exists, err := client.IndexExists("user").Do(ctx)        if err != nil {                panic(err.Error())        }        fmt.Println(">>index-exists>>", exists)        // 创建索引        if !exists {                rst, err := client.CreateIndex("user").Do(ctx)                if err != nil {                        panic(err.Error())                }                fmt.Println(">>index-index>>", rst.Index)        }        // 批量添加        for i := 1; i <= 3; i++ {                id := fmt.Sprintf("%d", i)                rsp, err := client.Index().                        Index("user").                        Id(id).                        BodyJson(&User{Name: fmt.Sprintf("name%d", i), Age: i}).                        Do(ctx)                if err != nil {                        panic(err.Error())                }                fmt.Println(">>doc-create>>", "id:", rsp.Id, "index:", rsp.Index, "type:", rsp.Type, "seqno:",                        rsp.SeqNo, "result:", rsp.Result, "status:", rsp.Status)        }        // 修改        rsp, err := client.Update().Index("user").Id("1").Doc(&User{Name: "name100", Age: 100}).Do(ctx)        if err != nil {                panic(err.Error())        }        fmt.Println(">>doc-update>>", rsp)        // 删除        rsp2, err2 := client.Delete().Index("user").Id("2").Do(ctx)        if err2 != nil {                panic(err2.Error())        }        fmt.Println(">>doc-delete>>", rsp2)        // 查询所有        rst, err := client.Search().Index("user").Do(ctx)        if err != nil {                panic(err.Error())        }        for _, u := range rst.Each(reflect.TypeOf(User{})) {                fmt.Println(">>search-all>>", u.(User).Name, u.(User).Age)        }        // 查询条件 - 相等        q := elastic.NewQueryStringQuery("name:name1")        rst, err = client.Search().Index("user").Query(q).Do(ctx)        if err != nil {                panic(err.Error())        }        for _, u := range rst.Each(reflect.TypeOf(User{})) {                fmt.Println(">>search-eq>>", u.(User).Name, u.(User).Age)        }        // // 查询条件 - 大于 - 分页        q2 := elastic.NewBoolQuery()        q2.Must(elastic.NewRangeQuery("age").Gt(3))        rst, err = client.Search().                Index("user").                Size(2).                From(1).                Sort("age", false).                Query(q2).                Do(ctx)        if err != nil {                panic(err.Error())        }        for _, u := range rst.Each(reflect.TypeOf(User{})) {                fmt.Println(">>search-eq2>>", u.(User).Name, u.(User).Age)        }}

以上是"elasticsearch3中golang怎么用"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

0