Нужно ли использовать очень короткие имена полей в документах ElasticSearch?
Мой коллега предложил использовать очень короткие имена для полей в упругой.
В настоящее время у меня есть отображение как:
"keyword": {
type: { type: "string" },
phrase: { type: "string" },
count: { type: "integer" }
}
но он говорит, что это займет много места, и отображение должно быть:
"keyword": {
t: { type: "string" },
p: { type: "string" },
c: { type: "integer" }
}
Мне кажется странным запутывать код таким способом. Эластичный поиск не оптимизирует это? Не удалось найти справки по этому вопросу в ресурсах эластичного поиска документов.
2 ответа
Я рекомендую использовать более длинные имена для удобства чтения. ES собирается сделать все возможное, чтобы оптимизировать ваши данные и сделать поиск молниеносным, поэтому мы любим это! Я рекомендую не пытаться перехитрить ES, создавая более короткие имена полей, чтобы никто не знал, что они означают через 6 месяцев.
Это смотря какая цель - сэкономить место на диске или ускорить запросы?
1. Стоимость диска
Да, более длинные имена полей приведут к созданию более крупных индексов. ES работает иначе, чем СУБД, например MySQL, где длина имени столбца не имеет значения. ES хранит имена полей вLucene
индекс и в_source
. Если проблемой является дисковое пространство, я бы использовал поля с короткими именами, напримерbn
и обратитесь к нему через удобную для человека константу в коде, напримерCompany::BUSINESS_NAME = bn
. Короткие имена полей могут сэкономить значительный объем дискового пространства (а также памяти, особенно при работе с большими наборами данных). Однако это следует рассматривать в зависимости от варианта использования - например, жертвование разборчивостью и удобством сопровождения кодовой базы может не стоить экономии 2% дискового пространства.
2. Ускорьте запросы
Нет, более короткие или длинные имена полей не повлияют на скорость поиска. На скорость поиска в основном влияют сопоставление типов, анализаторы, нормализаторы и правильно выполненные запросы (например, избегайте использования подстановочного знака-префикса звезды).*name
).
Совет . Затраты на диск также можно сократить, если не хранить поля сNULL
ценить. См. советы здесь или здесь .