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

Index if not exists using bulk processor in elasticsearch

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

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

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

如果您为具有相同文档 ID 的文档编制索引,那么它将进行更新。否则它将添加一个新文档。

换句话说,如果您 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 so 相同id的推文可能会被覆盖