elasticsearch - 插入时防止在Elasticsearch对象数组中重复

标签 elasticsearch

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

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

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

目前,我有以下常规脚本,但它总是给我错误:
if (!ctx._source.cities) { 
  ctx._source.cities = [city]
} else { 
  ctx._source.cities= (ctx._source.cities+ [city]).unique{ a, b -> a.id == b.id }
}

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

最佳答案

错误groovy code

如下所述使用unique:

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

希望这可以帮助

关于elasticsearch - 插入时防止在Elasticsearch对象数组中重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35469137/

相关文章:

elasticsearch - Elasticsearch OR查询

elasticsearch - Elasticsearch查询 “OR but not ALL”

django - 带有django-haystack的Elasticsearch自动运行更新索引

elasticsearch - 通过Spark SQL将Tableau与Elastic Search连接

java - 我们可以在Elasticsearch的独立节点上安装插件来进行测试吗?

elasticsearch - Lambda的AppSync映射响应从ElasticSearch获取结果

Elasticsearch Sense chrome 插件已禁用,需要获取在控制台中编写的 dsl 查询

elasticsearch - 用于查询字段的多个分析器(按字段)

elasticsearch - 如何按字段过滤并执行全文搜索?

function - 根据doc字段的字符串值在Elasticsearch中 boost 结果