我在ElasticSearch中有一个包含字典的文档。最初它是空的但后来我使用_update API更新它并插入几个键/值对。现在我需要再次清空字典。我尝试使用_update API并将空字典传递给它({})但旧的键/值对仍然存在。我不能使用ctx脚本。一种解决方案是传递null然后重新插入更新的字典,但这将导致两个ES调用。 _update API声明它合并字典但没有选项将其清空。
答案 0 :(得分:0)
因此,回顾一下,您已将Elasticsearch中的文档编入索引,如此
curl -XPOST localhost:9200/your_index/your_type/123 -d '{"field1":"value1"}'
然后使用_update
端点插入了更多字段:
curl -XPOST localhost:9200/your_index/your_type/123/_update -d '{
"doc": {"field2": "value2"}
}'
现在您的文档123
看起来像这样,您想将其清空以包含新数据。
{
"field1": "value1",
"field2": "value2"
}
您可以使用新字段重新索引新文档但使用相同的ID,就像我们在上面的第一个命令中所做的那样:
curl -XPOST localhost:9200/your_index/your_type/123 -d '{"field3":"value3"}'
文档123
现在看起来像
{
"field3": "value3"
}
但是,如果您需要先清空文档并在以后更新文档,则只需将其删除即可
curl -XDELETE localhost:9200/your_index/your_type/123
由于文档将丢失,您的应用可以认为它是空的(从语义上讲)。