登录
首页 >  Golang >  Go问答

通过 go 语言批量更新 Elasticsearch

来源:stackoverflow

时间:2024-03-09 08:33:26 421浏览 收藏

有志者,事竟成!如果你在学习Golang,那么本文《通过 go 语言批量更新 Elasticsearch》,就很适合你!文章讲解的知识点主要包括,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就请你继续往下看吧~

问题内容

我尝试用golang更新我的elasticsearch数据库。我有两个功能:

func updateallbyuserid(client *elastic.client, id string, requestname string, requestnick string) error {
    ctx := context.background()

    query := elastic.newmatchquery("user_id", id)

    out_name, err := client.updatebyquery().index("test").type("test").query(query).script(elastic.newscriptinline("ctx._source.user_name = '" + requestname + "'")).do(ctx)
    if nil != err {
        log.println(err)
    }

    fmt.println("update all name: ", out_name.updated)

    return nil

}


func updateallnicksbyuseridinfeed(client *elastic.client, id string, requestnick string) error {
    ctx := context.background()

    query := elastic.newmatchquery("user_id", id)


    out_nick, err := client.updatebyquery().index("test").type("test").query(query).script(elastic.newscriptinline("ctx._source.user_nick = '" + requestnick + "'")).do(ctx)
    if nil != err {
        log.println(err)
    }

    fmt.println("update all nick: ", out_nick.updated)

    return nil

}

弹性中的post:

POST {index}/{type}/_update_by_query
{
  "script": {
    "inline": "ctx._source.user_name = 'test'",
    "inline": "ctx._source.user_nick = 'test test'"
  },
  "query": {
    "match": {
      "user_id": "mtJZngDOy6Qj22Qv9MEf1MhSLVb2"
    }
  }
}

我正在使用库 github.com/olivere/elastic。 elasticsearch的版本是5.6 这个功能单独运行效果很好,但我有两个问题:

如何在同一个功能中更新? 那么为什么同时使用这两个函数我会出现这个错误:

弹性:错误 409(冲突)


解决方案


我解决了问题:

out_name, err := client.UpdateByQuery().Index("test").Type("test").Query(query).Script(elastic.NewScriptInline("ctx._source.user_name = '" + requestName + "';ctx._source.user_nick = '" + requestNick + "';ctx._source.user_photo = '" + fullImageURL + "';ctx._source.user_thumb = '" + thumbnailURL + "'")).Do(ctx)
    if nil != err {
        log.Println(err)
    }

理论要掌握,实操不能落!以上关于《通过 go 语言批量更新 Elasticsearch》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>