Влияние производительности Elasticsearch на выбор структуры отображения для индекса - PullRequest
2 голосов
/ 13 апреля 2019

Я получаю данные в таком формате, как

   {
     name:"index_name",
     status: "good",
     datapoints: [{
       paramType: "ABC",
       batch: [{
         time:"timestamp1<epoch in sec>",
         value: "123"
       },{
         time:"timestamp2<epoch in sec>",
         value: "123"
       }]
     },
     {
       paramType: "XYZ",
       batch: [{
         time:"timestamp1<epoch in sec>",
         value: "123"
       },{
         time:"timestamp2<epoch in sec>",
         value: "124"
       }]
     }]

   }

Я хотел бы сохранить данные вasticsearch таким образом, чтобы я мог выполнять запросы на основе timerange, status или paramType.

Как уже упоминалось здесь , я могу определить datapoints или batch как вложенный тип данных, который позволит индексировать объект внутри массива.

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

{
name : "index_name",
status: "good",
paramType:"ABC",
time:"timestamp<epoch in sec>",
value: "123"
}

какой из них будет наиболее эффективным?

Если я выберу второй путь, я знаю, что в массиве batch может быть ~ 1000 элементов и 10-15paramsType массив, что означает, что будет сгенерировано ~ 15k документов, а пара значений ключей 15k * 5 (= 75K) будет повторяться в индексе?

Здесь это объясняет преимуществои недостаток использования вложенных, но не связанных с производительностью статистических данных.в моем случае не будет никакого обновления во внутреннем объекте.Так что не уверен, какой из них будет лучше.Кроме того, у меня есть два вложенных объекта, поэтому я хотел бы знать, как я могу запросить, если я использую вложенный для получения данных между временным диапазоном?

1 Ответ

1 голос
/ 16 апреля 2019

Плоская структура будет работать лучше, чем вложенная. Вложенные запросы медленнее по сравнению с запросами по запросу; Также при индексации - внутри один вложенный документ представляется как пакет документов; просто они индексируются в одном блоке.

Пока ваши требования соблюдены - второй вариант работает лучше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...