Я не могу решить, как сохранить информацию о событии в elasticsearch. Информация хранится в mysql, и, поскольку я хочу сделать ее фильтруемой, я решил использовать elasticsearch для индексации событий. Каждое из полей имеет ограниченное количество вариантов, но разрешено несколько вариантов. Должен ли я хранить информацию непосредственно следующим образом:
{
"id":"1",
"name":"Event A",
"type":"Training,Workshop,Meeting",
"industrialSector":"Energy,Transport",
"country":"China"
// + 80 fields alike
}
Или используйте некоторую внутреннюю работу, чтобы преобразовать строковые значения в числовые токены перед сохранением в elasticsearch:
{
"id":"1",
"name":"Event A",
"type":"1 3 5",
"industrialSector":"2 3",
"country":"7"
// + 80 fields alike
}
Будет объект карты для ссылки на параметры поля перед сохранением или после извлечения:
let options =
{
type:{
Training:1,
Fair:2
Workshop:3,
Brokerage:4
Meeting:5
},
industrialSector:{
Tech:1
Energy:2
Transport:3
}
}
Первый требует меньше работы, но работает ли он медленнее и требует больше места на диске, чем второй?