我想以我不会有重复的方式在我的文档中存储标签。Elasticsearch:存储无重复标签
我的文档有Tags
场定义为:
...
"Tags": { "type": "string" }
...
我从Python中添加标签的Tags
领域:
es.update(index=ES_INDEX, doc_type=ES_DOC_TYPE, id=user_id, body=doc)
我的更新文档:
doc = {
"script": {
"lang": "groovy",
"inline": "ctx._source.Tags.addAll(tags)",
"params": {
"tags": [
"c#",
"winforms",
"type-conversion",
"decimal",
"opacity"
]
}
}
}
这可行,但标签可能是杜折襞。
我想在存储它们之前对标记进行重复数据删除。我基本上想要Tags
字段作为一个集合。
这是我试了一下(基于这样的回答:https://stackoverflow.com/a/17465831/318557)
...
"inline": "ctx._source.Tags.addAll(tags); ctx._source.Tags.unique();",
...
但它没有任何效果。
有没有Groovy解决方案来做到这一点?或者也许从Elasticsearch的一些支持存储集?