加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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!")
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读