Я знаком со стратегией индексирования и моделирования данных в Elasticsearch. Предположим, у нас есть 3 поля в индексе Elasticsearch, а именно _id, name, referenceId (UUID). _id - это фактический идентификатор в индексе. Я хочу сделать, содержит поиск по имени поля и регистронезависимый поиск по referenceId. Обычно я создаю собственный анализатор с ngram tokenizer в поле имени, которое решает проблему поиска. Я установлю отображение для referenceId в качестве ключевого слова.
{
name: {
ngram
}
referenceId : {
keyword
}
}
Так что теперь у меня будет эффективный индекс. Также у меня нет индекса по умолчанию, созданного Elasticsearch. Я пытаюсь смоделировать то же самое в MongoDB.
Вопросы:
1. По умолчанию MongoDB не создает индексы ни для каких полей. Таким образом, запрос к полю имени будет медленным без индекса. Я думаю, что индекс одного поля подойдет для поля имени, где я могу сделать, содержит поиск. Я прав?
- Какой тип индекса лучше всего подходит для referenceId? Я просто собираюсь сделать точный поиск совпадений с учетом регистра. Я думаю, что создание индекса с одним полем создаст много данных. Выполнение поиска без индекса сделает полное сканирование. Какое эффективное решение здесь?