Использование нескольких индексов или не очень сильно зависит от приложения, поэтому я не могу дать точный ответ, а несколько мыслей.
По моему опыту, индексы - это скорее средство для поддержки обслуживания и операций, чем для моделирования данных. Например, намного легче удалить индекс, чем удалить все документы из одного источника из большего индекса. Или, если вы поддерживаете совершенно отдельные поисковые приложения, которые , а не запрашивают данные друг друга, разные индексы - это путь.
Но если вы хотите, как и вы, запрашивать документы по источникам данных, имеет смысл хранить их в одном индексе. Если только иметь сопоставимый рейтинг по всем элементам в вашем индексе. Убедитесь, что вы повторно используете поля в ваших данных, которые имеют одинаковое значение (название, год производства, исполнители и т. Д.). Для полей, уникальных для источника, мы обычно используем имена полей с префиксом, например, movie_...
для метаданных только для фильма.
Что касается языка, вам нужно использовать специфичные для языка поля, такие как title_en, title_es, title_de. В идеале во время запроса вы знаете язык вашего пользователя (из браузера, потому что он выбрал его явно, ...) и затем выполняете поиск в доступных для этого полях. Обязательно используйте анализаторы языка для этих полей, в запросе и во время индекса.
Я считаю поисковую систему немного похожей на базу данных: база данных хранит данные, но также может индексировать их. Поисковая система индексирует данные, но также может хранить их. База данных стремится нормализовать схему для устранения избыточности, поисковая система лучше всего работает с денормализованными данными для производительности запросов.