Как я должен думать о индексах поисковых систем? - PullRequest
4 голосов
/ 21 июля 2011

Я использую эластичный поиск и не совсем понимаю, что такое индекс.Например, если у меня есть 3 модели (рюкзак, обувь и перчатка), я помещаю каждую модель в свой собственный индекс или я индексирую атрибуты каждой модели: то есть я индексирую шнурки обуви, ее подошву и т. Д.?

Я пытаюсь понять, если поиск по индексам идет медленно.Например, если я индексирую каждый атрибут моих моделей и, скажем, 20 индексов, когда я запускаю поиск, который должен просматривать данные по всем индексам, это медленнее, чем наличие одного индекса и просмотр 20 сохраненных атрибутов.в этом индексе?

1 Ответ

7 голосов
/ 22 июля 2011

В Elasticsearch индекс состоит из одного или нескольких основных шардов, где шард является экземпляром Lucene.Каждый основной сегмент может иметь ноль или более реплик, существование которых обеспечивает высокую доступность и повышает производительность поиска.

Один фрагмент может содержать много данных.Однако при использовании нескольких сегментов легче распределить рабочую нагрузку между несколькими процессорами и несколькими серверами.

При этом вам необходим баланс.Правильное количество шардов зависит от ваших данных и контекста.Осколки не являются бесплатными, поэтому, если вы используете кластер из 100 узлов, полезно иметь тысячи осколков, но вы не хотите этого на одном узле.

В Elasticsearch, а также при наличиииндексы, у вас есть понятие типов.Представьте, что индекс похож на базу данных, а тип - на таблицу.

Использование разных типов не требует дополнительных затрат и лучше подходит для вашего примера, чем отдельные индексы.

Вы можетепоиск по всем типам (или выбранному списку типов) и по всем индексам (или выбранному списку) или любой комбинации.

Каждый тип может иметь свои собственные поля (например, столбцы в таблице).

Итак, в вашем примере у меня будет один индекс, содержащий 3 типа, каждый со своими полями.Начните с количества по умолчанию первичных осколков (5) и количества реплик по умолчанию (1) и изменяйте их только тогда, когда вы лучше понимаете свои данные.

Примечание: не путайте индекс в Elasticsearch с индексом вбаза данных

...