在弹性搜索中更新字典

时间:2015-06-11 10:12:32

标签: python dictionary elasticsearch

我在ElasticSearch中有一个包含字典的文档。最初它是空的但后来我使用_update API更新它并插入几个键/值对。现在我需要再次清空字典。我尝试使用_update API并将空字典传递给它({})但旧的键/值对仍然存在。我不能使用ctx脚本。一种解决方案是传递null然后重新插入更新的字典,但这将导致两个ES调用。 _update API声明它合并字典但没有选项将其清空。

1 个答案:

答案 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

由于文档将丢失,您的应用可以认为它是空的(从语义上讲)。