Поле перечисления elasticsearch

Скажем, у меня есть поле, которое может иметь только конечный набор значений. Разве не было бы более эффективным (по индексам и/или хранилищу) хранить его как своего рода ENUM?

Есть ли такая возможность в поиске elastics?

Примером может служить имя состояний в конечной машине.

Ответ 1

Да, да. Когда вы индексируете полные текстовые поля, Elasticsearch также индексирует информацию, такую ​​как длина поля, и положение и частота каждого члена в поле.

Они не относятся к значениям ENUM и могут быть полностью исключены.

Фактически, если вы отображаете свое поле как {"index": "not_analyzed"}, то, помимо сохранения точного значения, которое вы предоставляете, не пытаясь его проанализировать, оно также отключает хранение дополнительной информации, о которой я упоминал выше.

Ответ 2

В вашем приложении используйте хэш-карту { "enumVal1" => 1, "enumVal2" => 2, "enumValX" => 3 }, а затем используйте в ES только значения из hashmap, это может сэкономить место.