为什么使用 DD 选项的 FT.DROPINDEX 命令没有删除我所有的文档?
最后更新时间:2024 年 5 月 11 日
问题
为什么使用 FT.DROPINDEX
以及 DD
选项没有删除我所有的文档?
答案
在索引异步索引时,可能存在索引删除操作。
如果索引创建仍在运行(FT.CREATE
正在异步运行),则只会删除已经索引的文档哈希值。待索引的文档哈希值将保留在数据库中。要检查索引是否完成,请使用 FT.INFO
。
索引过程中发生的错误也会导致相同的问题。如果发生错误,则文档不会被索引,也不会被带有 DD
选项的 FT.DROPINDEX
命令删除。请查看以下示例。
为数字值创建索引。
FT.CREATE numeric_idx PREFIX 1 cnt: SCHEMA val NUMERIC
添加两个文档。
HSET cnt:1 val 5
HSET cnt:2 val "word"
预期第二个文档不会被索引,因为 val
的值不是数字。请使用以下命令进行检查
FT.INFO numeric_idx
并确认只有一个文档被索引,并且存在错误。
9) num_docs
10) "1"
...
41) hash_indexing_failures
42) "1"
现在,删除索引和文档,并验证只删除了一个文档。
127.0.0.1:6379> FT.DROPINDEX numeric_idx DD
OK
127.0.0.1:6379> EXISTS cnt:1
(integer) 0
127.0.0.1:6379> EXISTS cnt:2
(integer) 1
参考资料
请参阅文档以了解有关 FT.DROPINDEX 的更多信息。