Нужно ли использовать очень короткие имена полей в документах 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ценить. См. советы здесь или здесь .

Другие вопросы по тегам