ElasticSearch API POST / PUT DeDupe

时间:2016-07-21 23:52:47

标签: elasticsearch

我希望使用Elastic Search RESTful API将数据发送到我的ES实例。以下是一些示例数据:

[{"subject":"matt","predicate":"likes","object":"coffee","label":"1_10"}]
[{"subject":"james","predicate":"likes","object":"water","label":"1_10"}]
[{"subject":"leo","predicate":"likes","object":"liquor","label":"1_10"}]
[{"subject":"matt","predicate":"likes","object":"coffee","label":"1_10"}]
[{"subject":"matt","predicate":"likes","object":"coffee","label":"1_10"}]

我的帖子看起来像是:

"http://" + url + "/something/quads/

使用JSON有效负载。

我正在看待看涨期权,并尝试以下方法:

"http://" + url + "/something/quads/_create

来自此文档:https://www.elastic.co/guide/en/elasticsearch/guide/current/create-doc.html

问题是它在ES中创建了ID作为_create我有什么问题吗?

1 个答案:

答案 0 :(得分:1)

如果您使用/something/quads/之类的网址进行POST调用,则ES会自动为您的文档生成ID。

如果您想要使用PUT调用,则需要在网址/something/quads/123/something/quads/456等中自行提供文档ID。

在您的第二个网址/something/quads/_create中,您错过了文档ID。它应该是/something/quads/123/_create。检查您再次链接到的文档,然后您就会看到。

另请注意以下两个命令之间的区别

PUT /something/quads/123
PUT /something/quads/123/_create

如果已存在ID为123的文档,则第二个将失败。但是,第一个命令将始终成功并覆盖标识为123的文档(如果存在)。