Golang elasticsearch 对接问题

Golang elasticsearch 对接问题,第1张

概述es包 gopkg.in/olivere/elastic.v3 Golang *** 作es 过程中,定义struct 结果写入es的内容总是为空,后来发现,定义struct 首字母小写了,Golang中首字母小写表示私有,所以无法成功写入,改成共有的即可。 刚学习,还不熟悉,做个记录 // qnzsEs project main.go package main import (     "fmt"   

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%dmilliseconds\n",searchResult.TookInMillis)
fmt.Println(searchResult.Hits.TotalHits)

fmt.Println("HelloWorld!")
}
总结

以上是内存溢出为你收集整理的Golang elasticsearch 对接问题全部内容,希望文章能够帮你解决Golang elasticsearch 对接问题所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1283216.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-09
下一篇2022-06-09

发表评论

登录后才能评论

评论列表(0条)

    保存