golang-ElasticSearch学习

一、ElasticSearch连接

1、引入"github.com/olivere/elastic/v7"包

2、连接

client,err :=elastic.NewClient(elastic.SetSniff(false),elastic.SetURL(“服务器地址”),elastic.SetBasicAuth("账号", "密码"))

二、日志上传

1、单条记录上传

_, err :=conn.GetESClient().Index().

Index(index).// 设置索引名称,索引必须为小写字母数字下划线等组成,不得包含大小字母

  Id(guid).// 设置文档id,此处id最好为小写字母或数字组成,否则日志虽然插入或查询可行,但是刷新字段时无效

  BodyJson(json).// 指定内容

  Do(c)// 执行请求,需要传入一个上下文对象

2、批量上传

builService :=conn.GetESClient().Bulk().Index(index)

for _, v :=range logs {

m := v.(map[string]interface{})

if m["guid"] !=nil {

id := m["id"].(string)

doc :=elastic.NewBulkIndexRequest().Id(id).Doc(v)

builService.Add(doc)

}

res, err := builService.Do(c)

三、查询

1、查询(组合)

k:查询字段,v:对应的字符串

boolQuery := elastic.NewBoolQuery().Must()

searchService :=conn.GetESClient().Search()

searchService = searchService.Index(Index).SearchType("query_then_fetch").Pretty(true)

2、分页查询

searchService.From(PageIndex * PageSize)

searchService.Size(PageSize)

3、匹配查询

querys := []elastic.Query{}

//q := elastic.NewMatchQuery(k,v)

//q := elastic.NewWildcardQuery(k,v)

//q := elastic.NewMatchPhraseQuery(k,v).Boost(0.7)

//q := elastic.NewMoreLikeThisQuery().LikeText(v).Field(k)

//q := elastic.NewTermQuery(k,v)

//有特殊字符的如,URL类型查询用此方法,不然查询不到,亲测有效

 q :=elastic.NewMatchPhrasePrefixQuery(k,v).MaxExpansions(10)

querys =append(querys,q)

//区间查询(多个)

//如果是字符串类型,字段后面需要加.keyword

k +=".keyword"

rQuery :=elastic.NewRangeQuery(k)

rQuery = rQuery.Gte(itemRange["gte"])

rQuery = rQuery.Lte(itemRange["lte"])

querys =append(querys,rQuery)

boolQuery = boolQuery.Must(querys...)

searchService = searchService.Query(boolQuery)

4、排序查询(多个)

sorters := []elastic.Sorter{}

//此处如果是字符串,后面需加.keyword

k +=".keyword"

sort :=elastic.NewFieldSort(k).Desc()

sorters =append(sorters,sort)

searchService = searchService.SortBy(sorters...)

searchResult, err := searchService.Do(c)

四、删除

1、删除索引

conn.GetESClient().DeleteIndex(indexs...).Do(c)

//删除并清空数据

delAll :=conn.GetESClient().DeleteByQuery()

delAll.Do(c)

2、删除某一条日志

deletService := conn.GetESClient().Delete().// 设置索引名

  Index(index)

deletService.Id(guid)

_,err := deletService.Do(c)

五、刷新某个字段值

//入刷新json数据中的status字段位1

script :=fmt.Sprintf("ctx._source['status']=%d",1)

es :=conn.GetESClient()

updateR, err := es.UpdateByQuery(queryIndex).

// 设置查询条件

  Query(elastic.NewTermQuery("id",id)).

//同步执行(不设置会异步执行,不能即时刷新,马上查询会没有变化)

Refresh("true").

// 通过脚本更新内容

  Script(elastic.NewScript(script)).

// 如果文档版本冲突继续执行

ProceedOnVersionConflict().Do(c)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容