Cassandra Stratio Не удалось выполнить чтение

Вот мой запрос:

select * from profiles where expr(profiles_index, '{ 
  filter: { 
    type: "date_range", 
    field: "age", 
    from: "1984/01/01", 
    to: "2010/01/01", 
    operation: "is_within" 
  } 
}');

Вот мой стол:

CREATE TABLE profiles (
    user_id timeuuid,
    age timestamp,
    PRIMARY KEY (user_id)
);

и моя схема выглядит примерно так:

CREATE CUSTOM INDEX profiles_index ON profiles ()
USING 'com.stratio.cassandra.lucene.Index'
WITH OPTIONS = {
    'refresh_seconds' : '60',
    'schema' : '{
        default_analyzer : "english",
        fields : {
            age                  : {type : "date",
                                    validated : true,
                                    pattern : "yyyy/MM/dd"
            }
        }
    }'
};

И я получаю это исключение:

Трассировка (последний вызов был последним): файл "/opt/apache-cassandra-3.0.3/bin/cqlsh.py", строка 1249, в файле execute_simple_statement result = future.result() "/opt/apache-cassandra-3.0.3/bin/../lib/cassandra-driver-internal-only-3.0.0-6af642d.zip/cassandra-driver-3.0.0-6af642d/cassandra/cluster.py", строка 3122, в результате поднять себя._final_exception ReadFailure: code=1300 [Реплике не удалось выполнить чтение] message="Операция не выполнена - получено 0 ответов и 1 ошибок" info={'failures': 1, 'receive_responses': 0, 'required_responses': 1, "последовательность": "ОДИН"}

Кто-нибудь знает, почему я могу получить эту ошибку?

2 ответа

Решение

Мне нужно было использовать поиск "Range", а не поиск "Date Range". Если вы используете поиск "Диапазон дат", лучше использовать "Картограф диапазон дат".

@user1019182 совершенно прав, поиски "date_range" предназначены для использования с данными, проиндексированными с помощью преобразователя "date_range", который индексирует длительности времени, составленные из даты начала и окончания, используя пространственный подход.

Для поиска простых дат по времени вы должны использовать поиск по диапазону:

select * from profiles where expr(profiles_index, '{ 
  filter: { 
    type: "range", 
    field: "age", 
    lower: "1984/01/01", 
    upper: "2010/01/01", 
    include_lower: true,
    include_upper:true 
  } 
}');

@ mahendra-singh неверен, формат метки времени cqlsh по умолчанию не связан с этим.

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