2016-01-05 4 views
1

В нашем эластичном индексе у нас есть ежедневные новостные документы, и мы используем агрегаты для этих документов. Но после двух последовательных пробегов elasticsearch возвращает недостаточно памяти. Теперь мы увеличили размер кучи для эластичности, но есть ли какое-либо решение, кроме того, увеличивая барабан для эластичности?Производительность агрегирования Elasticsearch

Свойства полей, которые используются для агрегации;

"detail_stop": { 
      "type": "string", 
      "store": true, 
      "analyzer": "stop_analyzer" 
     } 

Запрос на агрегирование;

{ 
     "from": 0, 
     "size": 5000, 
     "query": { 
      "bool": { 
       "must": [ 
        { 
         "range": { 
          "date": { 
           "gte": "now-0d/d" 
          } 
         } 
        } 

       ] 
      } 
     }, 
     "aggs": { 
      "words": { 
       "terms": { 
        "size": 5000, 
        "field": detail_stop, 
        "min_doc_count": 3 
       } 
      } 
     } 
    } 

В настоящее время мы имеем упругий кластер с 1 узлом (8core 2.5GHz, 32GB) и ES_HEAP_SIZE = 16g (упругие есть 16gb память). Как мы можем сократить использование памяти и повысить производительность?

ответ

0

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

С новыми версиями Elasticsearch значения doc становятся нормой вместо кеша данных поля. Они немного медленнее по сравнению с полевыми данными, но решают проблему с памятью. Имейте в виду, что для использования значений doc вам придется снова индексировать все ваши данные. Узнайте больше об этом here.

+0

Я знаю, что мне нужно повторно индексировать, когда я использую doc_val, но значения doc не поддерживают анализируемые поля, поэтому это не опция. Спасибо за ответ. –

+0

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

+0

Их нет. Если вы используете кеш поля, вам нужно сделать пробел в памяти кучи. – bittusarkar

Смежные вопросы