如果弹性搜索中使用批量处理器不存在索引

时间:2015-05-03 22:13:53

标签: twitter elasticsearch twitter4j twitter-streaming-api

我正在尝试索引文档,如果它在elasticsearch中不存在。我在为文档编制索引并使用BulkProcessor操作时使用Requests.add。我有时会拥有完全相同的ID,是不是自动添加,而是更新?

P.S。更新不是必需的,它可以保持原样。

P.S.2我正在尝试将用户过去的推文整合到elasticsearch-twitter-river的用户流中。

1 个答案:

答案 0 :(得分:1)

如果您使用相同的文档ID索引doc,那么它将进行更新。否则它将添加一个新文档。

换句话说,如果您PUT提交了{index}/{type}/{id}的文档,那么它将始终使用该ID更新(覆盖)文档。如果您POST提交了{index}/{type}的文档,那么通常Elasticsearch会为您的每个POST生成一个新文档。也就是说,除非你mapped a document field to the _id field in mappings

似乎Twitter River uses the PUT method with explicitly specifying the id所以具有相同ID的推文可能会被覆盖。