ElasticSearch 类似集合(唯一值列表)的功能?

ElasticSearch set-like (unique list of values) functionality?

ElasticSearch array data type 是否支持类似集合的功能?

我希望能够写入多种类型的数组并强制数组值的唯一性。

换句话说,我正在寻找类似于 Redis 的东西 SADD or MongoDB's addToSet 但对于 ElasticSearch。

您可以使用 scripted updates 完成此操作。

curl -XPOST 'localhost:9200/test/type1/1/_update' -d '{
    "script" : "ctx._source.tags.contains(tag) ? (ctx.op = \"none\") : ctx._source.tags += tag"
    "params" : {
        "tag" : "blue"
    }
}'

请注意,出于安全原因,Elasticsearch 中的脚本有许多限制;您可能想查看文档中的 Scripting module page