У меня есть индекс эластичного поиска среднего размера (1,46T или ~ 1e8 документов). Он работает на 4 серверах, каждый из которых имеет 64 ГБ оперативной памяти, равномерно распределенной между эластичной и ОС (для кэширования).
Я хочу опробовать новую агрегацию значимых терминов, поэтому я запустил следующий запрос...
{
"query": {
"ids": {
"type": "document",
"values": [
"xCN4T1ABZRSj6lsB3p2IMTffv9-4ztzn1R11P_NwTTc"
]
}
},
"aggregations": {
"Keywords": {
"significant_terms": {
"field": "Body"
}
}
},
"size": 0
}
Который должен сравнить тело указанного документа с остальной частью индекса и найти термины, важные для документа, которые не распространены в индексе.
К сожалению, это неизменно приводит к
ElasticsearchException [org.elasticsearch.common.breaker.CircuitBreakingException: данные слишком велики, данные превышают ограничение в [25741911654] байт];
вложенный: UncheckedExecutionException [org.elasticsearch.common.breaker.CircuitBreakingException: данные слишком велики, данные будут больше, чем ограничение в [25741911654] байтов];
вложенный: CircuitBreakingException [Данные слишком велики, данные будут больше, чем ограничение в [25741911654] байт];
через минуту или две и, кажется, означает, что у меня недостаточно памяти.
Рассматриваемые эластичные серверы на самом деле являются виртуальными машинами, поэтому я отключил другие виртуальные машины и выделил каждому эластичному экземпляру 96 ГБ, а каждой ОС — еще 96 ГБ.
Возникла та же проблема (разные номера, заняло больше времени). У меня нет аппаратного обеспечения с более чем 192 ГБ доступной памяти, поэтому я не могу увеличить.
Разве агрегации не предназначены для использования с индексом в целом? Я делаю ошибку в отношении формата запроса?