插入时防止Elasticsearch对象数组中的重复项

时间:2016-02-17 22:35:29

标签: elasticsearch

假设我的索引中有以下文档:

{
  id: 1
  cities: [
    {id:1,name:"ny"},
    {id:2,name:"sf"}
  ]
}

如何编写更新脚本,以便在插入{id:1,name:" ny"再次,它不会创建重复的条目?

目前我有以下groovy脚本,但它一直给我错误:

if (!ctx._source.cities) { 
  ctx._source.cities = [city]
} else { 
  ctx._source.cities= (ctx._source.cities+ [city]).unique{ a, b -> a.id == b.id }
}

我认为问题是我正在错误地访问对象属性。请指教。谢谢!

1 个答案:

答案 0 :(得分:1)

发生错误groovy code

如下所述使用unique

ctx._source.cities= (ctx._source.cities+ [city]).unique{it.id}

希望这有帮助