我想要更新文件。所以,每次我想要更新一个对象时,我都会对它进行序列化,然后将它发送给ES。想象一下POJO对象。
obj.status = 20;
obj.description = "raw description";
当我更新这个对象时,它在ES上被序列化并编入索引:
{
status: 20,
description: "raw description"
}
所以,我现在需要将此对象更新为:
obj.status = null;
然后,我将其序列化:
{
description: "raw description"
}
问题是,从现在开始,我不希望status
被编入索引。问题是ES将此对象与索引的前一个对象合并。所以,索引这个文件是:
{
status: 20,
description: "raw description"
}
所以,我需要从索引中“删除”这个字段。
任何想法。 感谢。
答案 0 :(得分:0)
你有2个解决方案。
代码示例:
# Update API with Script
POST your_index/your_type/1/_update
{
"script" : "ctx._source.remove(\"status\")"
}
# Index API to reindex
PUT your_index/your_type/1
{
description: "raw description"
}
Update API触发Read before Write,而Index API仅触发Write。