Я создаю поисковый индекс, который буду использовать исключительно как фильтр терминов .Таким образом, нет поиска / агрегирования, только фильтрация и GET
s.
Я обсуждаю структуру этого индекса поиска, должен ли каждый документ содержать все полей, которые я хочу отфильтроватьдля, или я должен создать индекс для поля.
Например, скажем, каждый документ относится к пользователю.У каждого пользователя есть список игр, в которые он играл, книги, которые он читал, и фильмы, которые он смотрел.При поиске рекомендаций по игре / книге / фильму я буду использовать термин «фильтр», чтобы отфильтровать те элементы, с которыми они уже взаимодействовали.
Интересно, должен ли я иметь один индекс поиска с документом?отображение как: users_index
{
'game_ids': [],
'movie_ids' : [],
'book_ids': []
}
или один индекс на значение поиска, например: user_games_index
{
'game_ids': []
}
user_movies_index
{
'movie_ids': []
}
user_books_index
{
'book_ids': []
}
Плюсы для одного индекса:
- Каждый индекс идет с накладными расходами, поэтому чем меньше, тем лучше
- Если я когда-либохотите получить все информации о пользователе, все это в одном индексе
Плюсы для нескольких индексов:
Согласно update api docs , обновление документа означает получение всей информации в первую очередь.Я буду много обновлять каждый документ, и эти массивы могут стать довольно большими (думаю, тысячи идентификаторов).Обновление идентификатора книги приведет к получению всех идентификаторов игры, которые занимают память.Если бы они были в отдельных индексах, я мог бы избежать этого.
Просто было бы легче поддерживать мой конец вещей
Я должен отметить, что еслиЯ использую несколько индексов, это будет только 4 или 5, около 500 тыс. Документов на индекс.Кроме того, только 1 первичный осколок на индекс, без реплик, и я нахожусь на одном экземпляре m5.2xlarge EC2 (8 ядер, 32 ГБ ОЗУ).
Эти характеристики настолько малы, что это не будет иметь большого значенияна данный момент, или я должен отдать предпочтение одному индексу или многим?