У меня есть набор данных 390M документов (всего 710 ГБ). Каждый документ может содержать несколько абзацев текста и несколько тегов, например:
{
body: "When you reach the end of your rope, tie a knot in it and hang on",
author: "Franklin Roosevelt",
authors_title: "President of the United States",
type: "quote",
year: 1870,
location: "Washingon, DC, USA",
authors_overview: "Franklin Delano Roosevelt, often referred to by his initials FDR, was an American politician who served as the 32nd president of the United States from 1933 until his death in 1945"
}
Запросы часто выполняются по нескольким полям, и часто приходится выполнять поиск по всему набору данных. Объем поисков на самом деле довольно низок (<10 / se c), и записи в основном происходят массово (каждые несколько недель). </p>
В качестве подтверждения концепции я вставил весь набор данных в один узел Elasticsearch на сервере с 32 ядрами, 128 ГБ ОЗУ и твердотельным накопителем объемом 1,5 ТБ. Размер кучи JVM установлен на 29 ГБ.
Эта настройка работает, но запросы выполняются медленно (часто на 20-30 с). В идеале я хотел бы, чтобы запросы были менее 1 секунды.
Какой тип кластера вы бы предложили для достижения sh этого? (# узлы, # осколки, оборудование)
Большое спасибо за помощь!
edit:
отображения
properties: {
authors_title: {
type: "text",
analyzer: "title_indexing_analyzer",
search_analyzer: "title_search_analyzer",
},
body: {type: "text", analyzer: "default_analyzer"},
author: {
type: "text",
analyzer: "default_analyzer"
},
authors_overview: {
type: "text",
analyzer: "default_analyzer"
}
}