将唯一项附加到Go中的ElasticSearch中的数组

时间:2016-12-20 06:02:07

标签: arrays elasticsearch go

UseCase

  • 在弹性搜索
  • 中的类型数组字段中添加对象项
  • 如果该字段不存在,请创建一个并将该项添加到字段
  • 如果该字段存在,则只有在该数组中不存在该项时才应添加/附加该项,即数组中没有重复项。

代码

func (elasticSearchClient *ElasticSearchClient) Upsert(index string, indextype string, id string, jobApplication models.JobApplication) {

client := elasticSearchClient.GetClient()
upsert, err := client.Update().
    Index(index).Type(indextype).Id(id).
    Script(elastic.NewScript("if(! ctx._source.jobApplications.contains(application)){ ctx._source.jobApplications += application }").
        Params(map[string]interface{}{"application": jobApplication})).
    Upsert(map[string]interface{}{"jobApplications": jobApplication}).
    Do()

if err != nil {
    fmt.Println("Error , got: %v", err.Error())
}

fmt.Println(upsert)
}

注意

  • jobApplication是一种结构类型

错误

  

错误400(错误请求):无法执行脚本   [类型= illegal_argument_exception]

0 个答案:

没有答案