У меня есть кластер из 10 узлов, где я индексирую около 100 миллионов записей ежедневно. Всего около 6 миллиардов записей. Я постоянно загружаю данные. Каждая запись содержит около 75 полей. 99% моих запросов основаны на одном полевом запросе. По существу выберите * из таблицы, где groupid = 'value'. Большинство возвращаемых запросов возвращают около сотни записей.Elasticsearch кэширует одно поле для быстрого ответа
Мои запросы в настоящее время занимают около 30 секунд, чтобы запустить первые 2 раза, а затем в миллисекундах. Проблема в том, что все пользовательские запросы ищут другой идентификатор группы, поэтому запросы будут медленными по большей части, пока они не запустит его в третий раз.
Возможно ли «кэшировать» поле groupid, чтобы я мог получить второстепенные запросы.
Мой текущий запрос выглядит так. (Псевдопользователь-запрос) (я использую неанализируемое поле, которое я считаю, что лучше?)
query : {
filtered : {
filter : {
"term" : { groupID : "valuex" }
}
}
}
Я "ве исследовал и не знает, как идти об этом. Я посмотрел в doc_values = да и возможно кэш поле?
Я не забочусь о выигрыше, заполнителей. Мой единственный случай использования, чтобы отфильтровать записи и только возвращая 100 или так из 5 миллиардов, которые имеют правильную идентификатор_группы.
у нас есть о 64G памяти на каждом сервере.
Просто ищите помощь по h для достижения оптимальной производительности/кэширования? или что-нибудь еще, что могло бы помочь.
Я думал о маршрутизации, но это было бы сложно на основе наших значений groupid.
благодаря
Какая версия? – dadoonet
Запуск 2.1 – user2092856