2017-02-11 3 views
0

Я планирую использовать Elasticsearch в основном для анализа данных. У меня есть большой документ со многими, moslty числовыми (до 4 байтов) атрибутами. Большинство полей в моем документе содержат около 30% значений. Если я правильно понимаю, я могу воспользоваться функцией Doc Values, которая аналогична расположению столбчатых данных в некоторых базах данных. Мне было интересно, как Elasticsearch/Lucene сохранит эти данные. Используются ли какие-либо компрессии (например, длина прогона) или плотная компоновка данных, где нули будут занимать одинаковое пространство на хранении в виде значений?Elasticsearch/Lucene null обработка значений doc

+0

будет [это] (https://www.elastic.co/guide/en/elasticsearch/reference/current/null-value.html) помощь? – pratikvasa

ответ

0

Поведение ElasticSearch по умолчанию заключается не в том, чтобы добавлять это поле вообще в случае значений NULL. Вы можете принудительно отобразить поле с помощью null_value, но для типов, где поддерживается NULL. Например: long Поле не может быть отображено со строкой null_value.

Чтобы решить вопрос, ElasticSearch не будет выделять пространство по умолчанию для полей, отсутствующих в документе. Но вы можете столкнуться с MissingFieldException в случае, если вы запрашиваете какое-то поле, которое никогда не имело значения. Чтобы этого избежать, сопоставьте свои поля явно перед индексацией. Если вы явно указали, не забудьте установить свойство null_value этого поля вне диапазона ввода данных.

+0

Да, мое намерение состояло в том, чтобы сопоставить все поля, которые я хочу фильтровать. Однако это вызывает вопрос. Неужели оно установит недостающее значение в 0? Я имею в виду, что 0 является допустимым значением и не должно использоваться в качестве замены для null. –

+0

Извините, предложение, которое я написал, интерпретировало неправильное сообщение. Только что отредактировал мой ответ. ES не будет устанавливать значение по умолчанию 0 для отсутствующих полей. Он не будет устанавливать значение вообще, и вы можете оказаться в «MissingFieldException», даже если вы явно указали. На более безопасной стороне вы можете установить значение поля «null_value» для некоторого значения вне вашего диапазона ввода (например long.MIN_VALUE или int.MIN_VALUE) – NutcaseDeveloper

Смежные вопросы