返回顶部
首页 > 资讯 > 精选 >go语言操作es的方法
  • 225
分享到

go语言操作es的方法

2023-06-30 06:06:07 225人浏览 薄情痞子
摘要

这篇文章主要介绍“Go语言操作es的方法”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“go语言操作es的方法”文章能帮助大家解决问题。elasticsearch介绍Elasticsearch(ES)

这篇文章主要介绍“Go语言操作es的方法”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“go语言操作es的方法”文章能帮助大家解决问题。

    elasticsearch

    介绍

    Elasticsearch(ES)是一个基于Lucene构建的开源分布式、RESTful接口的全文搜索引擎。Elasticsearch还是一个分布式文档数据库,其中每个字段均可被索引,而且每个字段的数据均可被搜索,ES能够横向扩展至数以百计的服务器存储以及处理PB级的数据。可以在极短的时间内存储、搜索和分析大量的数据。通常作为具有复杂搜索场景情况下的核心发动机。

    Elasticsearch能做什么

    • 当你经营一家网上商店,你可以让你的客户搜索你卖的商品。在这种情况下,你可以使用ElasticSearch来存储你的整个产品目录和库存信息,为客户提供精准搜索,可以为客户推荐相关商品。

    • 当你想收集日志或者交易数据的时候,需要分析和挖掘这些数据,寻找趋势,进行统计,总结,或发现异常。在这种情况下,你可以使用Logstash或者其他工具来进行收集数据,当这引起数据存储到ElastiCSSearch中。你可以搜索和汇总这些数据,找到任何你感兴趣的信息。

    • 对于程序员来说,比较有名的案例是GitHubgitHub的搜索是基于ElasticSearch构建的,在github.com/search页面,你可以搜索项目、用户、issue、pull request,还有代码。共有40~50个索引库,分别用于索引网站需要跟踪的各种数据。虽然只索引项目的主分支(master),但这个数据量依然巨大,包括20亿个索引文档,30TB的索引文件。

    go语言操作es

    go get github.com/olivere/elastic

    解决golang使用elastic连接elasticsearch时自动转换连接地址

    go语言操作es的方法

    elastic.SetSniff(false)
    client, _ := elastic.NewClient(  // ...  // 将sniff设置为false后,便不会自动转换地址   elastic.SetSniff(false),)

    go语言操作es的方法

    初始化

    var client *elastic.Clientvar host = "Http://xxx:9200"//初始化es驱动func init() {   errorlog := log.New(os.Stdout, "app", log.LstdFlags)   var err error   client, err = elastic.NewClient(elastic.SetErrorLog(errorlog), elastic.SetURL(host), elastic.SetSniff(false))   if err != nil {      panic(err)   }   info, code, err := client.Ping(host).Do(context.Background())   if err != nil {      panic(err)   }   fmt.Printf("Es return with code %d and version %s \n", code, info.Version.Number)   esversionCode, err := client.ElasticsearchVersion(host)   if err != nil {      panic(err)   }   fmt.Printf("es version %s\n", esversionCode)}

    数据创建

    info —>employee -------FirstName,LastName,Age,About,Interests

    结构体方式

    type Employee struct {FirstName string `JSON:"firstname"`LastName string `json:"lastname"`Age int `json:"age"`About string `json:"about"`Interests []string `json:"interests"`}//创建索引func create() {//1.使用结构体方式存入到es里面e1 := Employee{"jane", "Smith", 20, "I like music", []string{"music"}}put, err := client.Index().Index("info").Type("employee").Id("1").BodyJson(e1).Do(context.Background())if err != nil {panic(err)}fmt.Printf("indexed %d to index %s, type %s \n", put.Id, put.Index, put.Type)}func main() {create()}

    字符串方式:

    func create1() {   //使用字符串   e1 := `{"firstname":"john","lastname":"smith","age":22,"about":"i like book","interests":["book","music"]}`   put, err := client.Index().Index("info").Type("employee").Id("2").BodyJson(e1).Do(context.Background())   if err != nil {      panic(err)   }   fmt.Printf("indexed %d to index %s, type %s \n", put.Id, put.Index, put.Type)}

    查找

    //查找func get() {   get, err := client.Get().Index("info").Type("employee").Id("1").Do(context.Background())   if err != nil {      panic(err)   }   if get.Found {      fmt.Printf("got document %s in version %d from index %s,type %s \n", get.Id, get.Version, get.Index, get.Type)   }}func main() {   get()}

    修改

    func update() {   res, err := client.Update().Index("info").Type("employee").Id("1").Doc(map[string]interface{}{"age": 88}).Do(context.Background())   if err != nil {      fmt.Println(err.Error())   }   fmt.Printf("update age %s \n", res.Result)}func main() {   update()}

    删除

    //删除func delete() {   res, err := client.Delete().Index("info").Type("employee").Id("1").Do(context.Background())   if err != nil {      fmt.Println(err.Error())   }   fmt.Printf("delete result %s", res.Result)}func main() {   delete()}

    查找

    func query() {   var res *elastic.SearchResult   var err error   res, err = client.Search("info").Type("employee").Do(context.Background())   printEmployee(res, err)}//打印查询的employeefunc printEmployee(res *elastic.SearchResult, err error) {   if err != nil {      fmt.Print(err.Error())      return   }   var typ Employee   for _, item := range res.Each(reflect.TypeOf(typ)) {      t := item.(Employee)      fmt.Printf("%#v\n", t)   }}//条件查找func query1() {   var res *elastic.SearchResult   var err error   //查找方式一:   q := elastic.NewQueryStringQuery("lastname:smith")   res, err = client.Search("info").Type("employee").Query(q).Do(context.Background())   printEmployee(res, err)   //查找方法二:   if res.Hits.TotalHits > 0 {      fmt.Printf("found a total fo %d Employee", res.Hits.TotalHits)      for _, hit := range res.Hits.Hits {         var t Employee         err := json.Unmarshal(*hit.Source, &t) //另一种取出的方法         if err != nil {            fmt.Println("failed")         }         fmt.Printf("employee name %s:%s\n", t.FirstName, t.LastName)      }   } else {      fmt.Printf("found no employee \n")   }}

    年龄大于21的查找

    //年龄大于21的func query3() {var res *elastic.SearchResultvar err errorboolq := elastic.NewBoolQuery()boolq.Must(elastic.NewMatchQuery("lastname", "smith"))boolq.Filter(elastic.NewRangeQuery("age").Gt(21))res, err = client.Search("info").Type("employee").Query(boolq).Do(context.Background())printEmployee(res, err)}//打印查询的employeefunc printEmployee(res *elastic.SearchResult, err error) {   if err != nil {      fmt.Print(err.Error())      return   }   var typ Employee   for _, item := range res.Each(reflect.TypeOf(typ)) {      t := item.(Employee)      fmt.Printf("%#v\n", t)   }}

    包含book的

    //包含book的func query4() {   var res *elastic.SearchResult   var err error   matchPhrase := elastic.NewMatchPhraseQuery("about", "book")   res, err = client.Search("info").Type("employee").Query(matchPhrase).Do(context.Background())   printEmployee(res, err)}

    分页

    //分页func list(size, page int) {   var res *elastic.SearchResult   var err error   if size < 0 || page < 1 {      fmt.Printf("param error")      return   }   res, err = client.Search("info").Type("employee").Size(size).From((page - 1) * size).Do(context.Background())   printEmployee(res, err)}

    集群搭建

    配置文件修改

    node.name : node-102node.name : node-103network.host: 192.168.1.102network.host: 192.168.1.103Discovery.zen.ping.unicast.hosts: ["s201","s202","s203"]

    go语言操作es的方法

    go语言操作es的方法

    关于“go语言操作es的方法”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网精选频道,小编每天都会为大家更新不同的知识点。

    --结束END--

    本文标题: go语言操作es的方法

    本文链接: https://lsjlt.com/news/327617.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    猜你喜欢
    • go语言操作es的方法
      这篇文章主要介绍“go语言操作es的方法”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“go语言操作es的方法”文章能帮助大家解决问题。Elasticsearch介绍Elasticsearch(ES)...
      99+
      2023-06-30
    • go语言操作es的实现示例
      目录Elasticsearch介绍Elasticsearch能做什么go语言操作es解决golang使用elastic连接elasticsearch时自动转换连接地址初始化数据创建查...
      99+
      2024-04-02
    • Go语言操作redis数据库的方法
      先上命令速查网站,菜鸟yydshttps://www.runoob.com/Redis/redis-strings.html操作redis的包是go-redis/redis官方文档 https://redis.uptra...
      99+
      2022-07-21
      go操作redis goredis数据库
    • 一文搞懂Go语言操作Redis的方法
      目录前言安装依赖包连接Redisredis连接池总结前言 Redis是一个开源的内存数据库,在项目开发中redis的使用也比较频繁,本文介绍了Go语言中go-redis库的基本使用。感兴趣的小伙伴们可以参考借鉴,希望对大...
      99+
      2024-04-02
    • Go语言读取txt文档的操作方法
      读取文件是所有编程语言中最常见的操作之一。本教程我们将了解如何使用 Go 读取txt文档。 文档内容每行是一个文件名信息,含有空格区分不同项;ioutil.ReadFile返回的是[...
      99+
      2024-04-02
    • go语言结构体指针操作的方法
      本篇内容介绍了“go语言结构体指针操作的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!指针指针是代表某个内存地址的值。内存地址储存另一个...
      99+
      2023-06-30
    • Go操作ES-4(query查询)
      在Go中操作Elasticsearch进行查询,需要使用Elasticsearch的官方Go客户端库。以下是一个简单的示例,演示如何...
      99+
      2023-09-21
      Go
    • go语言context包功能及操作使用的方法
      本篇内容介绍了“go语言context包功能及操作使用的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Context包到底是干嘛用的?我...
      99+
      2023-06-30
    • Go语言中的Slice链式操作方法是什么
      今天小编给大家分享一下Go语言中的Slice链式操作方法是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。示例首先模拟一个...
      99+
      2023-07-05
    • Go语言学习之文件操作方法详解
      目录引言1. 打开和关闭文件2. 读取文件2.1 defer 语句2.2 手动宕机处理2.3 打开文件并获取内容2.4 bufio 读取文件2.5 ioutil 读取文件2.6 读取...
      99+
      2024-04-02
    • ABAP和Go语言的初始化操作方法是什么
      本篇内容主要讲解“ABAP和Go语言的初始化操作方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“ABAP和Go语言的初始化操作方法是什么”吧!# ABAPGo作用同上:Kubernete...
      99+
      2023-06-03
    • Go语言zip文件的读写操作方法有哪些
      这篇文章主要介绍“Go语言zip文件的读写操作方法有哪些”,在日常操作中,相信很多人在Go语言zip文件的读写操作方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Go语言zip文件的读写操作方法有哪些...
      99+
      2023-07-05
    • 在es中查询null值的操作方法
      目录1、背景2、需求3、准备数据3.1 创建mapping3.2 插入数据4、查询 name字段为null的数据5、查询address不存在或值直接为null的数据6、参考链接1、背...
      99+
      2023-02-01
      es中查询null值 es null值查询
    • Go语言中的IO操作及Flag包的用法
      一、格式化输入和输出 1.从终端获取用户的输入 fmt.Scanf 空格作为分隔符,占位符和格式化输出的一致 fmt.Scan 从终端获取用户的输入,存储在Scanln中的参数里,空...
      99+
      2024-04-02
    • Go语言time包的时间常用操作方法有哪些
      本篇内容主要讲解“Go语言time包的时间常用操作方法有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Go语言time包的时间常用操作方法有哪些”吧!Now():获取当前本地的时间impor...
      99+
      2023-07-04
    • Go语言中JSON文件的读写操作方法有哪些
      这篇文章主要介绍“Go语言中JSON文件的读写操作方法有哪些”,在日常操作中,相信很多人在Go语言中JSON文件的读写操作方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Go语言中JSON文件的读写操...
      99+
      2023-07-05
    • Go语言中XML文件的读写操作方法有哪些
      这篇文章主要介绍“Go语言中XML文件的读写操作方法有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Go语言中XML文件的读写操作方法有哪些”文章能帮助大家解决问题。XML(extensible...
      99+
      2023-07-05
    • R语言的Dataframe常用操作方法
      这篇文章主要讲解了“R语言的Dataframe常用操作方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“R语言的Dataframe常用操作方法”吧!上节我们简单介绍了Dataframe的定义...
      99+
      2023-06-20
    • C语言二叉树的操作方法
      本篇内容主要讲解“C语言二叉树的操作方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C语言二叉树的操作方法”吧!二叉树分类满二叉树除最后一层无任何子节点外,每一层上的所有结点都有两个子结点的二...
      99+
      2023-06-30
    • GO语言框架快速集成日志模块的操作方法
      目录前言zap包的集成简介最基础的使用定制化进阶封装前言 在我们的日常开发中, 日志模块永远是最基础且最重要的一个模块, 它可以有效的帮我们发现问题, 定位问题, 最后去解决问题; ...
      99+
      2024-04-02
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作