Хранение сложного json-объекта без схемы в Cassandra

У меня есть json-объект без схемы, который я хочу сохранить в Cassandra DB с помощью spring -cassandra. Я узнал, что Кассандра поддерживает тип карты, но Кассандра не принимает Map<String, Object> в качестве модели данных.

Мне нужно запросить поля json, поэтому о его хранении в виде капли не может быть и речи. Как я могу это сделать?

PS: Я просмотрел Сохранение объекта JSON в CASSANDRA, ответ не кажется применимым к моему варианту использования, поскольку мой json может быть очень сложным.


person Kapil Earanky    schedule 23.02.2016    source источник


Ответы (2)


Вы смотрели UDT (определяемый пользователем тип)?

Вы можете определить UDT следующим образом:

CREATE TYPE my_json(
   property1 text,
   property2 int,
   property3 map<text, text>,
   property4 map<int, another_json_type>,
   ...
)

А затем в Java используйте Map<String, UserType>

Примечание. UserType поступает из драйвера Java: https://github.com/datastax/java-driver/blob/2.1/driver-core/src/main/java/com/datastax/driver/core/UserType.java < / а>

Вы не можете создать тип пользователя n Java, вы можете получить его только из метаданных вашей таблицы, см. Это: https://github.com/datastax/java-driver/blob/3.0/driver-core/src/test/java/com/datastax/driver/core/UserTypesTest.java#L62-L81

person doanduyhai    schedule 23.02.2016

1) одно из моих решений - интегрировать поиск solr и сначала проиндексировать эту таблицу.

2) Позже напишите анализатор solr, чтобы проанализировать json и поместить его в различные поля в solr во время индексации.

3) Следующим шагом является использование запроса с поддержкой solr, например select * from table, где solr_query = "{синтаксис выражения поиска}"

person Gomes    schedule 25.02.2016