如何使用ElasticSearch中的脚本将多个标签添加到现有列表中

时间:2018-02-12 16:38:04

标签: elasticsearch nest

我将带有“tags”的文档作为一个具有值列表的属性。例如

“tags”:[“red”,“blue”,“green”]

我想在NEST的一次更新通话中添加[“黄色”,“黑色”]并删除[“蓝色”]标签。

如何确保该列表中的所有标签都是唯一的。

注意:我正在使用ElasticSearch 6.x

由于

1 个答案:

答案 0 :(得分:1)

你基本上有两个选择:

  1. 从Elasticsearch获取文档并反序列化为将标记集合建模为HashSet<string>的类型(或自己执行标记的不同操作)。

    将新标签添加到集合

    使用相同的索引id(和type)将类型索引回Elasticsearch以覆盖现有文档。

    1. 使用脚本语言(最有可能是Painless)执行脚本式更新,以便仅向文档添加不同的标记。仍然会出现文档的获取和索引,但在Elasticsearch中。