Я пытаюсь собрать решение для отчетности с использованием ES. Поскольку мой опыт работы с ES довольно простой, я хотел бы знать, имеет ли значение значение, если я использую целые числа при фильтрации.Лучше ли хранить целые числа вместо полного текста?
Я знаю, каковы будут значения моих фильтров и что я не буду допускать полнотекстовый поиск.
Поэтому в моем запросе я могу либо иметь
{
"filter" : {
"term" : { "gender" : 1 }
}
или
{
"filter" : {
"term" : { "gender" : "male" }
}
Будет ли быстрее использовать целое число вместо строки поиска?
Кроме того, я полагаю, что с использованием целого числа было бы лучше для дискового пространства, не так ли?
И, наконец, мне просто лучше использовать MySQL в таком случае - где полнотекстовый поиск не требуется?
Большое спасибо заранее,
Angel
Wow Спасибо за это! Я предполагаю, что в конце второго абзаца вы подразумеваете «это не должно иметь никакого значения»? В основном весь модуль отчетности, над которым я работаю, собирает тонны записей журнала из «озера данных», обрабатывает и подготавливает их для фильтрации. Идея состояла в том, чтобы обработанные журналы nginx/squid/etc сохранялись в их соответствующих таблицах в MySQL, но мы перешли в денормализованный вид ES-типа, где документ типа пользователя будет иметь пользовательские атрибуты, а затем массивы вложенные объекты для журналов nginx, журналов кальмаров и т. д. в минуту. Имеет ли это смысл? – AngelP
«Я предполагаю, что в конце второго абзаца вы подразумеваете« это не должно иметь значения »- вы правы, да. – evanv
Я бы склонялся к ES вместо MySQL на этом. Данные регистрации обычно не требуют долговечности и serializibaility гарантирует, и если вам нужно будет искать свои журналы, в ES будет намного проще сделать это. Кроме того, я предполагаю, что вы захотите закончить журналы через определенное время. В ES это очень просто справляться.В MySQL удаление данных из таблицы не восстанавливает дисковое пространство. Поэтому вам нужно периодически запускать таблицу оптимизации, чтобы вызвать уплотнение, которое блокирует вашу таблицу для записи во время ее запуска. Если вам не нужны гарантии, предоставленные MySQL, я бы, вероятно, использовал ES – evanv