Spec-Zone.ru › Elasticsearch 7
›Elasticsearch Guide [7.17] ›SQL ›Язык SQL

Типы данных

Тип Elasticsearch

Тип Elasticsearch SQL

Тип SQL

Точность SQL

Основные типы

null

null

NULL

0

boolean

boolean

BOOLEAN

1

byte

byte

TINYINT

3

short

short

SMALLINT

5

integer

integer

INTEGER

10

long

long

BIGINT

19

double

double

DOUBLE

15

float

float

REAL

7

half_float

half_float

FLOAT

3

scaled_float

scaled_float

DOUBLE

15

keyword type family

keyword

VARCHAR

32 766

text

text

VARCHAR

2 147 483 647

binary

binary

VARBINARY

2 147 483 647

date

datetime

TIMESTAMP

29

ip

ip

VARCHAR

39

Сложные типы

object

object

STRUCT

0

nested

nested

STRUCT

0

Неподдерживаемые типы

не указанные выше типы

unsupported

OTHER

0

Большинство типов данных Elasticsearch доступны в Elasticsearch SQL, как указано выше. Как видно, все типы данных Elasticsearch сопоставлены с типом данных с тем же именем в Elasticsearch SQL, за исключением типа данных date, который сопоставлен с типом datetime в Elasticsearch SQL. Это сделано для избежания путаницы с типами ANSI SQL DATE (только дата) и TIME (только время), которые также поддерживаются Elasticsearch SQL в запросах (с использованием CAST/CONVERT), но не соответствуют фактическому отображению в Elasticsearch (см. table ниже).

Очевидно, что не все типы в Elasticsearch имеют эквивалент в SQL и наоборот, поэтому Elasticsearch SQL использует особенности типов первого, а не второго, поскольку Elasticsearch в конечном итоге является хранилищем данных.

Помимо указанных типов, Elasticsearch SQL также поддерживает во время выполнения типы SQL, не имеющие эквивалента в Elasticsearch. Такие типы не могут загружаться из Elasticsearch (так как он о них не знает), но могут использоваться в запросах Elasticsearch SQL или в их результатах.

В таблице ниже указаны эти типы:

Тип SQL

Точность SQL

date

29

time

18

interval_year

7

interval_month

7

interval_day

23

interval_hour

23

interval_minute

23

interval_second

23

interval_year_to_month

7

interval_day_to_hour

23

interval_day_to_minute

23

interval_day_to_second

23

interval_hour_to_minute

23

interval_hour_to_second

23

interval_minute_to_second

23

geo_point

52

geo_shape

2 147 483 647

shape

2 147 483 647

SQL и многопольные значения

Основной концепцией в Elasticsearch является поле analyzed, представляющее собой полное текстовое значение, которое интерпретируется для эффективного индексирования. Эти поля имеют тип text и не используются для сортировки или агрегаций, так как их фактическое значение зависит от используемого analyzer, поэтому Elasticsearch также предлагает тип keyword для хранения точного значения.

В большинстве случаев, по умолчанию, используется оба типа для строк, которые Elasticsearch поддерживает через мульти-поля, то есть возможность индексировать одну и ту же строку несколькими способами; например, индексировать её как text для поиска, но также как keyword для сортировки и агрегаций.

Поскольку SQL требует точных значений, при встрече с полем text Elasticsearch SQL будет искать точное мульти-поле, которое может использовать для сравнений, сортировки и агрегаций. Для этого он будет искать первое keyword, которое не нормализовано, и использовать его как исходное поле точное значение.

Рассмотрим следующую string карту:

{
  "first_name": {
    "type": "text",
    "fields": {
      "raw": {
        "type": "keyword"
      }
    }
  }
}

Следующий SQL запрос:

SELECT first_name FROM index WHERE first_name = 'John'

идентичен:

SELECT first_name FROM index WHERE first_name.raw = 'John'

поскольку Elasticsearch SQL автоматически выбирает мульти-поле raw из raw для точного соответствия.

© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/7.17/sql-data-types.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API