Golang elasticsearch 对接问题
发布时间:2020-12-16 18:28:13 所属栏目:大数据 来源:网络整理
导读:es包 gopkg.in/olivere/elastic.v3 Golang操作es 过程中,定义struct 结果写入es的内容总是为空,后来发现,定义struct 首字母小写了,Golang中首字母小写表示私有,所以无法成功写入,改成共有的即可。 刚学习,还不熟悉,做个记录 //qnzsEsprojectmain.go
es包 gopkg.in/olivere/elastic.v3 Golang操作es 过程中,定义struct 结果写入es的内容总是为空,后来发现,定义struct 首字母小写了,Golang中首字母小写表示私有,所以无法成功写入,改成共有的即可。 刚学习,还不熟悉,做个记录 //qnzsEsprojectmain.go packagemain import( "fmt" "log" "os" "database/sql" "time" _"github.com/go-sql-driver/mysql" "gopkg.in/olivere/elastic.v3" ) varclient*elastic.Client vardb*sql.DB typequesstruct{ qidstring titlestring addedstring orgidstring } typeQues2struct{ Contentstring } funcinit(){ varerrerror client,err=elastic.NewClient( elastic.SetURL("http://127.0.0.1:9200"), elastic.SetSniff(false), elastic.SetHealthcheckInterval(10*time.Second), elastic.SetMaxRetries(5), elastic.SetErrorLog(log.New(os.Stderr,"ELASTIC",log.LstdFlags)), elastic.SetInfoLog(log.New(os.Stdout,"",log.LstdFlags))) iferr!=nil{ fmt.Println(err) } //初始化Mysql db,_=sql.Open("mysql","root:123456@tcp(127.0.0.1:3306)/youth_qnzs") db.SetMaxOpenConns(2000) db.SetMaxIdleConns(1000) db.Ping() } funcmain(){ quesRow:=getFromMysql() //fmt.Println(ques["orgstrid"]) //quesContent:=ques{qid:quesRow["q_id"],title:quesRow["q_title"],added:quesRow["q_added"],orgid:quesRow["orgid"]} quesContent:=Ques2{Content:quesRow["q_title"]} fmt.Println(quesContent) _,err:=client.Index(). Index("ikindex"). Type("fulltext"). Id(quesRow["q_id"]). BodyJson(quesContent). Refresh(true). Do() iferr!=nil{ //Handleerror panic(err) } } funcgetFromMysql()map[string]string{ record:=make(map[string]string) rows,err:=db.Query("SELECT*FROMq_questionslimit998,1") deferrows.Close() //checkErr(err) iferr!=nil{ fmt.Println(err) returnrecord } columns,_:=rows.Columns() scanArgs:=make([]interface{},len(columns)) values:=make([]interface{},len(columns)) forj:=rangevalues{ scanArgs[j]=&values[j] } forrows.Next(){ //将行数据保存到record字典 err=rows.Scan(scanArgs...) fori,col:=rangevalues{ ifcol!=nil{ record[columns[i]]=string(col.([]byte)) } } } returnrecord } /** *从es搜索 */ funcesSearch(){ termQuery:=elastic.NewTermQuery("content","中国") searchResult,err:=client.Search(). Index("ikindex").Type("fulltext").//searchinindex"twitter" Query(termQuery).//specifythequery //Sort("user",true).//sortby"user"field,ascending From(0).Size(10).//takedocuments0-9 Pretty(true).//prettyprintrequestandresponseJSON Do()//execute iferr!=nil{ //Handleerror panic(err) } //searchResultisoftypeSearchResultandreturnshits,suggestions, //andallkindsofotherinformationfromElasticsearch. fmt.Printf("Querytook%dmillisecondsn",searchResult.TookInMillis) fmt.Println(searchResult.Hits.TotalHits) fmt.Println("HelloWorld!") } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |