Elasticsearch没有事务,只有单个文档动作是原子的。
如果您的elasticsearch索引仅在插入所有项目后才可用,则可以使用以下方法:
配置您的应用程序以使用 索引别名 。
(此时别名不指向任何内容-可以)创建一个索引(例如
index_1
),然后使用批量插入添加所有文档。
(索引可以使用了)将 索引别名 指向
index_1
。
(您的应用程序可以使用index_1
)如果您需要添加新一批项目,请创建新索引
index_2
,然后将所有旧文档和新文档插入其中。执行任何需要的验证,以确保一切正常。
(此索引的更改对您的应用程序是不可见的)将 索引别名 指向
index_2
。
(这就像提交事务并切换到旧索引一样,就像事务回滚一样)删除
index_1
。
每当您需要添加新的文档集时,请重复第4,5,6点。我在几个站点上使用这种方法,每个站点在每次更新时都添加了10k到50k的文档作为索引。



