Влияние частых обновлений вasticsearch - PullRequest
2 голосов
/ 20 апреля 2020

Мы планируем использовать эластичный поиск для хранения сведений о профиле продавца и сводной информации о сумме его транзакции. Мы должны обновлять документ для каждой транзакции, чтобы поддерживать общую сумму в син c.

  1. Можно ли часто обновлять документ для увеличения поля?
  2. Мы планируем использовать API обновления для обновления файла. Будет ли он переиндексировать весь документ? Можно ли обновить только указанное поле c без переиндексации других полей?
  3. Будет хорошо, если у нас будет два индекса или индекс двух типов, один для профиля, другой для сводки?

Заранее спасибо.

1 Ответ

1 голос
/ 20 апреля 2020

Пожалуйста, найдите ответы в строке:

  1. Можно ли часто обновлять документы для увеличения поля?

Это очень субъективно и основано на различных параметрах, таких как, сколько документы в вашем индексе, сколько сегментов, сколько узлов данных и какова ваша запись QPS et c, Elasticsearch очень масштабируем, и если вы настроите свой кластер и индекс, вы сможете получить очень высокую пропускную способность без каких-либо проблем. Если вы предоставите более подробную информацию, мы можем порекомендовать, как настроить это для системы с высокой степенью записи, такой как ваша. Пожалуйста, обратитесь ES блог для настройки скорости индексации

Мы планируем использовать API обновления для обновления поля. Будет ли он переиндексировать весь документ? Есть ли возможность обновить только указанное поле c без переиндексации других полей?

Да, даже если вы обновите поле, внутренне упорядоченный поиск помечает старый документ как удаленный (программно удаленный) и создает новый документ, а затем при объединении сегментов старый удаленный документ фактически удаляется. Более подробная информация о частичном обновлении ES подробно описана Elastician в этом ответе SO

Будет хорошо, если у нас будет два индекса или индекс с двумя типами, один для профиля, другой для сводки?

Это зависит от того, нужно ли при поиске запрашивать оба индекса ( типы устарели в последней версии ), поэтому не имеет смысла создавать два индекса, поскольку денормализованные данные улучшат производительность поиска.

Также создание двух индексов с Объединение будет немного сложным для реализации, и в любом случае, поскольку вам нужно будет часто обновлять данные транзакции для автора, который будет иметь большую часть данных о продавцах, а обновления с большим индексом обходятся дороже, поэтому даже если вы сохраняете обновления на индекс профиля, но все же, поскольку он будет очень маленьким, ИМХО, он не даст гораздо лучшей производительности, но вы можете протестировать его с помощью стресс-тестирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...