Запрос из вторичного индекса на аэроспайк

Я рассматриваю аэроспайк для одного из наших проектов. Поэтому я в настоящее время создал кластер из 3 узлов и загрузил на него некоторые данные.

Пример данных

нс: имей

набор: imei_data

+-------------------+-----------------------+-----------------------+----------------------------+--------------+--------------+
| imsi              | fcheck                | lcheck                | msc                        | fcheck_epoch | lcheck_epoch |
+-------------------+-----------------------+-----------------------+----------------------------+--------------+--------------+
| "413010324064956" | "2017-03-01 14:30:26" | "2017-03-01 14:35:30" | "13d20b080011044917004100" | 1488358826   | 1488359130   |
| "413012628090023" | "2016-09-21 10:06:49" | "2017-09-16 13:54:40" | "13dc0b080011044917006100" | 1474432609   | 1505550280   |
| "413010130130320" | "2016-12-29 22:05:07" | "2017-10-09 16:17:10" | "13d20b080011044917003100" | 1483029307   | 1507546030   |
| "413011330114274" | "2016-09-06 01:48:06" | "2017-10-09 11:53:41" | "13d20b080011044917003100" | 1473106686   | 1507530221   |
| "413012629781993" | "2017-08-16 16:03:01" | "2017-09-13 18:10:48" | "13dc0b080011044917004100" | 1502879581   | 1505306448   |

Затем я создал вторичный индекс для lcheck_epoch, используя AQL, так как я хочу делать запросы на основе даты.

create index idx_lcheck on imei.imei_data (lcheck_epoch) NUMERIC

+--------+----------------+-----------+-------------+-------+--------------+----------------+-----------+
| ns     | bin            | indextype | set         | state | indexname    | path           | type      |
+--------+----------------+-----------+-------------+-------+--------------+----------------+-----------+
| "imei" | "lcheck_epoch" | "NONE"    | "imei_data" | "RW"  | "idx_lcheck" | "lcheck_epoch" | "NUMERIC" |
+--------+----------------+-----------+-------------+-------+--------------+----------------+-----------+

Когда я выполню

select imsi from imei.imei_data where idx_lcheck=1476165806

я собираюсь

Error: (204) AEROSPIKE_ERR_INDEX

Пожалуйста, объясни.

1 ответ

Решение

В своем запросе вы используете имя индекса, а не имя корзины. Попробуй это:

SELECT imsi FROM imei.imei_data WHERE lcheck_epoch=1476165806

Или же

SELECT imsi FROM imei.imei_data WHERE lcheck_epoch BETWEEN 1490000000 AND 1510000000

Просто отметьте, что вы можете выполнять гораздо более сложные запросы, используя фильтрацию предикатов через несколько языковых клиентов (Java, C, C#, Go). Например, класс PredExp Java-клиента (см. Примеры.)

Другие вопросы по тегам