Ответ 1
Немного старый вопрос, но информация может быть полезной в любом случае. Структура индекса/отображения в основном зависит от вашего использования. Вам нужно использовать все языки одновременно или использовать только один язык?
- Вариант 1: Например, многоязычный веб-сайт - пользователи просматривают и просматривают только на выбранном им языке. В этом случае мой опыт в том, что index-per-lang будет хорошим решением, особенно если вам нужно легко добавлять и удалять языки. Количество данных разделяется между индексами (преимущество по эффективности). Простая настройка анализаторов для каждого языка, особенно если их настройки различаются только по имени языка. Лично я использую этот вариант для одного из моих проектов.
Общие примечания для параметров 2 и 3. Использование одного из этих параметров дает вам возможность оценивать документы по-разному на основе языка, так как вы можете определить скоринг для каждого языкового поля. Вы можете добавлять новые поля к сопоставлению, если вам нужно добавить больше языков, но нет способа удалить или изменить существующие поля. Следовательно, вам нужно будет повторно проиндексировать весь свой контент и установить свойство для удаленного языка на пустой. Вам нужно будет добавить новые анализаторы для каждого нового языка. Но сначала необходимо закрыть индекс и открыть его после внесения изменений.
- Вариант 2. Если вам требуется поиск на всех языках сразу, то многопользовательское поле предоставляет вам самый простой доступ, так как вы можете сразу обращаться ко всем своим подполям
"book_title": { "type": "multi_field", "fields": { "english": { "type": "string" }, "german": { "type": "string" }, "italian": { "type": "string" }, } }
Здесь вы можете искать на определенном языке (например, "book_title.english" ) или на всех языках (используя "book_title" ). Вы должны быть осторожны не, чтобы обновить поле, используя имя "book_title" , но используя "book_title. [Language]". Использование "book_title" приведет к обновлению всех подполей с идентичными данными (что, вероятно, не так, как вы хотите)
-
Вариант 3: Полностью отдельные поля - вам нужно будет поместить их все в поисковый запрос, если вам нужно искать, как в варианте 2, более безопасным с точки зрения индексирования, поскольку вы не можете перезаписывать все языки по ошибке
-
Идея для варианта 4 - использование типа на языке: может использоваться, если у вас есть только один тип документов. Вы можете иметь разные поля для каждого языка. Не полезно, если у вас несколько типов документов.