首页 > 解决方案 > 访问二级索引 Aerospike_ERR_INDEX_NOT_READABLE 时 Aerospike 出错

问题描述

当我尝试访问二级索引时,Aerospike 抛出 AEROSPIKE_ERR_INDEX_NOT_READABLE 错误。使用以下语法创建索引

CREATE INDEX index_id ON test.class (id) STRING;

任何建议将不胜感激。

标签: aerospike

解决方案


aql> create index id1 on ns1.testset (1) string;
OK, 1 index added.

aql> show indexes
+-------+-----+-----------+-----------+-------+-----------+------+----------+
| ns    | bin | indextype | set       | state | indexname | path | type     |
+-------+-----+-----------+-----------+-------+-----------+------+----------+
| "ns1" | "1" | "NONE"    | "testset" | "WO"  | "id1"     | "1"  | "STRING" |
+-------+-----+-----------+-----------+-------+-----------+------+----------+
[127.0.0.1:3000] 1 row in set (0.001 secs)

+-------+-----+-----------+-----------+-------+-----------+------+----------+
| ns    | bin | indextype | set       | state | indexname | path | type     |
+-------+-----+-----------+-----------+-------+-----------+------+----------+
| "ns1" | "1" | "NONE"    | "testset" | "WO"  | "id1"     | "1"  | "STRING" |
+-------+-----+-----------+-----------+-------+-----------+------+----------+
[172.14.10.12:3000] 1 row in set (0.002 secs)

OK

aql> show indexes
+-------+-----+-----------+-----------+-------+-----------+------+----------+
| ns    | bin | indextype | set       | state | indexname | path | type     |
+-------+-----+-----------+-----------+-------+-----------+------+----------+
| "ns1" | "1" | "NONE"    | "testset" | "RW"  | "id1"     | "1"  | "STRING" |
+-------+-----+-----------+-----------+-------+-----------+------+----------+
[127.0.0.1:3000] 1 row in set (0.001 secs)

+-------+-----+-----------+-----------+-------+-----------+------+----------+
| ns    | bin | indextype | set       | state | indexname | path | type     |
+-------+-----+-----------+-----------+-------+-----------+------+----------+
| "ns1" | "1" | "NONE"    | "testset" | "RW"  | "id1"     | "1"  | "STRING" |
+-------+-----+-----------+-----------+-------+-----------+------+----------+
[172.14.10.12:3000] 1 row in set (0.002 secs)

OK

注意:1)创建索引时不需要分号,但不会抛出错误。所以:

aql> create index id1 on ns1.testset (1) string 

将是正确的方法。2) 一旦您发出创建索引的命令,根据数据大小,构建 SI 需要时间。检查状态:WO --> 索引尚不可读,但您可以插入记录,它们将被索引。当状态变为“RW”——读/写——你可以进行 SI 查询。
您不必重新启动 Aerospike 服务器。


推荐阅读