如何在elasticsearch中删除多个文档?

Chi*_*ski 5 json curl elasticsearch

我想从 elasticsearch 中删除我的数据库中不再存在的许多文档。

我知道要删除多个文档(例如 id 1,2,3),我们使用:

curl -XDELETE localhost:9200/index/doc/ids=1,2,3
Run Code Online (Sandbox Code Playgroud)

但我想只保留这些 id 并删除其余的,类似于 SQL 中的以下指令。

DELETE FROM table1 WHERE id_column NOT IN (1,2,3);
Run Code Online (Sandbox Code Playgroud)

在这种情况下,elasticsearch 是否有等效的 NOT IN ?

小智 7

它可能有点危险,但你可以使用delete by query通过查询api删除

查询将是这样的:

query : {bool : { must_not : {ids : values : [1,2,3,... ]}}}