Эластичный поиск — объединяет лучшие практики

#elasticsearch #elasticsearch-performance

#elasticsearch #elasticsearch-производительность

Вопрос:

Я сталкиваюсь со следующим как часть документации

  In Elasticsearch the key to good performance is to de-normalize your data into documents
  

А также,

 the restriction about, where both the child and parent documents must be on the same shard
  

Учитывая сценарий многоуровневой иерархии (прародитель -> родительский —> дочерний), где у некоторых родителей больше дочерних элементов, чем у других, и данные могут быть искажены, а несколько сегментов содержат экспоненциально большие данные, чем другие сегменты.

  1. Каковы наилучшие методы для повышения производительности?

  2. Хорошая ли идея поместить всю иерархию в один документ (а не по одному документу для каждого уровня). Родительские данные могут быть избыточными, если их больше, поскольку родительские данные необходимо скопировать во все документы?

Ответ №1:

Да, оба упомянутых вами утверждения верны, и позвольте мне ответить на оба ваших вопроса в контексте вашего варианта использования.

  1. Хорошая ли идея поместить всю иерархию в один документ (а не в один документ для каждого уровня). Родительские данные могут быть избыточными, если есть больше дочерних элементов, поскольку родительские данные необходимо скопировать во все документы?

Ответ: В общем, если у вас есть все данные для поиска в одном документе, поиск, безусловно, будет намного быстрее, и в этом вся причина денормализации данных в базах данных, которая также упоминается в первом утверждении, поскольку вам не нужно создавать несколько рабочих потоков и объединять результаты из несколькихдокументы / сегменты / узлы.кроме того, хранилище дешево, и хотя это сэкономит стоимость хранения, но сэкономит вычислительные затраты (дороже, чем хранение). короче говоря, если вы беспокоитесь о производительности запросов, то денормализация ваших данных значительно повысит ее.

  1. Каковы наилучшие методы для повышения производительности?

Ответ: если вы все еще продолжаете подход к нормализации, то, как уже упоминалось, вы должны хранить все связанные документы в одном сегменте и должны реализовать пользовательскую маршрутизацию для достижения этой цели.