2015-01-12 2 views
4

В настоящее время мы сталкиваемся с множеством исключений, как это:Поле, как Doc_Values ​​уронить использование памяти

ElasticsearchException[org.elasticsearch.common.breaker.CircuitBreakingException: Data too large, data for field [field1] would be larger than limit of [24108466176/22.4gb]] 

После некоторого исследования вышеупомянутого исключения, field1, кажется, занимает много fielddata cache size вместе с вызовом других полевыми ДАВАЙТЕ это field2

Результат GET /_stats/fielddata?fields=field1,field2:

"total": { 
     "fielddata": { 
      "memory_size_in_bytes": 260456614595, 
      "evictions": 1226307, 
      "fields": { 
       "field1": { 
        "memory_size_in_bytes": 76629429704 
       }, 
       "field2": { 
        "memory_size_in_bytes": 97600838429 
       } 
      } 
     } 
     } 

Примечание: оба поля not_analyzed. Поле1 сильно используется в поисковых запросах, а поле2 - не столько.

Таким образом, в разделе документации документации эти поля могут быть сохранены как doc values для уменьшения использования кучи.

Является ли это хорошим подходом к решению проблем памяти, таких как исключение выше?

В документации также говорится, что, сохраняя поля как значения doc, индексы станут больше, есть ли способ рассчитать это увеличение?

+3

Использование значений doc рекомендуется в таких ситуациях, потому что все давление, которое вы положили на кучу, будет перемещено на диск. Недостатком, однако, является небольшое снижение производительности. И поскольку вы перемещаете этот раздел кучи из памяти на диск, я бы предположил, что увеличение будет аналогично уменьшению использования кучи. –

ответ

0

Doc_Values являются прекрасными!

  • Для новых индексов, fielddata size для этих полей в 0:

    "total": { 
        "fielddata": { 
         "memory_size_in_bytes": 5394813851, 
         "evictions": 112, 
         "fields": { 
         "field1": { 
          "memory_size_in_bytes": 0 
         } 
         } 
        } 
    } 
    
  • Нет больше Data too large исключений при выполнении запросов на этих полях, не говоря уже о том, что эти запросы выполняются гораздо быстрее, я Угадайте, потому что CircuitBreaker не часто путешествует.

  • Для исполнения ... очень небольшое снижение индексации, ничего не беспокоит.

  • Размер индекса в нашем случае примерно на 20% больше.
Смежные вопросы