OpenSearch Fielddata - Fielddata=True, примеры и многое другое

В OpenSearch термин fielddata используется при сортировке и агрегации (аналогично функциям SQL GROUP BY COUNT и AVERAGE) текстовых полей.

OpenSearch logo

По соображениям производительности существуют определенные правила в отношении типов полей, которые можно агрегировать. Группировать можно по любому числовому полю, кроме текстовых полей, которые должны быть типа keyword или иметь fielddata=true, так как они не поддерживают doc_values (Doc values - это структура данных инвертированного индекса на диске, создаваемая при индексировании документа, которая делает возможным агрегирование).

Fielddata - это структура данных в памяти, используемая текстовыми полями для той же цели. Поскольку она занимает много места в куче, по умолчанию она отключена.

Примеры

Следующий вызов API PUT маппинга включит Fielddata для текстового поля my_field.

Примечания

Поскольку по умолчанию полевые данные для текстовых полей отключены, при попытке агрегирования по текстовому полю с отключенными полевыми данными будет выдано следующее сообщение об ошибке:

"По умолчанию полевые данные для текстовых полей отключены. Установите "fielddata=true" на ["имя_вашего_поля"], чтобы загрузить данные поля в память, отменив инвертирование инвертированного индекса". Обратите внимание, что при этом может быть использована "значительная память" - В этом случае можно либо включить field-data для этого текстового поля, либо выбрать другой способ запроса данных (опять же, поскольку field-data потребляет много памяти и не рекомендуется).

Понравилась статья? Поделиться с друзьями:
Добавить комментарий