boolean | UInt8 или Bool | В новых версиях ClickHouse Boolean поддерживается как псевдоним для UInt8. |
keyword | String | Используется для фильтрации по точному совпадению, группировки и сортировки. |
text | String | Возможности полнотекстового поиска в ClickHouse ограничены; токенизация требует пользовательской логики с использованием таких функций, как tokens, в сочетании с функциями для работы с массивами. |
long | Int64 | 64-битное целое число со знаком. |
integer | Int32 | 32-битное целое число со знаком. |
short | Int16 | 16-битное целое число со знаком. |
byte | Int8 | 8-битное целое число со знаком. |
unsigned_long | UInt64 | 64-битное целое число без знака. |
double | Float64 | 64-битное число с плавающей точкой. |
float | Float32 | 32-битное число с плавающей точкой. |
half_float | Float32 или BFloat16 | Наиболее близкий эквивалент. В ClickHouse нет 16-битного числа с плавающей точкой. В ClickHouse есть BFloat16 — он отличается от half-float IEEE-754: half-float обеспечивает более высокую точность при меньшем диапазоне, тогда как bfloat16 жертвует точностью ради более широкого диапазона, что делает его лучше подходящим для задач машинного обучения. |
scaled_float | Decimal(x, y) | Используется для хранения числовых значений с фиксированной точкой. |
date | DateTime | Эквивалентные типы даты и времени с точностью до секунды. |
date_nanos | DateTime64 | ClickHouse поддерживает точность до наносекунд с DateTime64(9). |
binary | String, FixedString(N) | Для бинарных полей требуется декодирование из base64. |
ip | IPv4, IPv6 | Доступны встроенные типы IPv4 и IPv6. |
object | Nested, Map, Tuple, JSON | В ClickHouse JSON-подобные объекты можно моделировать с помощью Nested или JSON. |
flattened | String | Тип flattened в Elasticsearch хранит целые объекты JSON как отдельные поля, обеспечивая гибкий, бессхемный доступ к вложенным ключам без полного mapping. В ClickHouse похожую функциональность можно реализовать с помощью типа String, но для этого потребуется обработка в materialized view. |
nested | Nested | Столбцы ClickHouse Nested предоставляют схожую семантику для сгруппированных вложенных полей, если используется flatten_nested=0. |
join | NA | Прямого аналога отношений parent-child нет. В ClickHouse это и не требуется, так как поддерживаются JOIN между таблицами. |
alias | Alias модификатор столбца | Псевдонимы поддерживаются через модификатор поля. К таким псевдонимам можно применять функции, например size String ALIAS formatReadableSize(size_bytes) |
range types (*_range) | Tuple(start, end) или Array(T) | В ClickHouse нет встроенного типа range, но числовые диапазоны и диапазоны дат можно представить с помощью структур Tuple(start, end) или Array. Для диапазонов IP (ip_range) храните значения CIDR как String и проверяйте их с помощью функций вроде isIPAddressInRange(). В качестве альтернативы можно использовать lookup-словари на основе ip_trie для эффективной фильтрации. |
aggregate_metric_double | AggregateFunction(...) и SimpleAggregateFunction(...) | Используйте состояние агрегатной функции и materialized view для моделирования предварительно агрегированных метрик. Все функции агрегации поддерживают состояние агрегатной функции. |
histogram | Tuple(Array(Float64), Array(UInt64)) | Вручную представляйте бакеты и счётчики с помощью массивов или пользовательских схем. |
annotated-text | String | Нет встроенной поддержки поиска с учётом сущностей или аннотаций. |
completion, search_as_you_type | NA | Нет встроенного движка для автодополнения или подсказок. Это можно воспроизвести с помощью String и функций поиска. |
semantic_text | NA | Нет встроенного семантического поиска — сгенерируйте эмбеддинги и используйте векторный поиск. |
token_count | Int32 | Используйте на этапе ингестии, чтобы вручную вычислять количество токенов, например с помощью функции length(tokens()), в том числе через материализованный столбец |
dense_vector | Array(Float32) | Используйте массивы для хранения эмбеддингов |
sparse_vector | Map(UInt32, Float32) | Имитируйте разреженные векторы с помощью map. Встроенной поддержки разреженных векторов нет. |
rank_feature / rank_features | Float32, Array(Float32) | Встроенного повышения релевантности во время выполнения запроса нет, но его можно реализовать вручную в логике скоринга. |
geo_point | Tuple(Float64, Float64) или Point | Используйте кортеж вида (широта, долгота). Point также доступен как тип ClickHouse. |
geo_shape, shape | Ring, LineString, MultiLineString, Polygon, MultiPolygon | Встроенная поддержка геометрических объектов и пространственной индексации. |
percolator | NA | Концепция индексации запросов отсутствует. Вместо этого используйте стандартный SQL и incremental materialized views. |
version | String | В ClickHouse нет встроенного типа для версий. Храните версии как строки и при необходимости используйте пользовательские функции (UDF) для семантического сравнения. Если нужны запросы по диапазону, рассмотрите нормализацию к числовым форматам. |