Что такое типы сопоставления?
В Elasticsearch каждый документ относится к индексу и типу. Индекс можно рассматривать как базу данных, тогда как тип можно рассматривать как таблицу по сравнению с реляционной базой данных. Тип сопоставления был логическим разделом объекта с другими объектами, которые принадлежали другим типам сопоставления в том же индексе.
Каждый тип сопоставления имеет свои собственные поля. Например, тип Пользователь могут иметь следующие поля:
"id": 123,
"name": "Шубхам",
«сайт»: 1
Другой тип сопоставления в том же индексе Веб-сайт могут иметь следующие поля, которые полностью отличаются от Пользователь тип:
"id": 1,
"title": "LinuxHint",
"ссылка": "https: // linuxhint.com / "
При поиске документа в индексе поиск можно было ограничить одним документом, указав одно поле как:
ПОЛУЧИТЬ idx_name / user, website / _search"запрос":
"матч":
"id": 1
В _тип поле документов совмещено с его _я бы создать _uid поле так документы с тем же _я бы может существовать в одном индексе.
Прочтите руководство по Elasticsearch для начинающих, чтобы лучше понять архитектуру Elasticsearch и начать работу с ней, установив ElasticSearch в Ubuntu.
Почему удаляются типы сопоставлений?
Точно так же, как мы сказали выше, объясняя, чем индекс и типы были похожи на базу данных и таблицу в реляционной базе данных, команда Elasticsearch думала то же самое, но это не так, поскольку Lucene Engine не следует той же аналогии. Это происходит по следующим причинам:
- В реляционной базе данных таблицы не зависят друг от друга, и имена столбцов, даже если они одинаковы, не имеют между ними никакой связи. Это не относится к полям в типах сопоставления, как в ES, поля с одинаковыми именами обрабатываются внутри как одно и то же поле Lucene Engine.
- В приведенном выше примере поле _я бы в Пользователь тип и Веб-сайт тип хранится в том же поле и должен иметь точно такой же тип, что может привести к разочарованию и путанице.
- Хранение сущностей без общих полей не позволяет Lucene эффективно сжимать документы.
Альтернативы типам сопоставления
Хотя решение принято, нам все же нужно разделить разные типы данных. Теперь первая альтернатива - отдельные документы в собственном индексе который имеет два преимущества:
- Теперь, когда данные являются общими для каждого индекса, Lucene может очень легко применять свои собственные методы сжатия данных.
- Теперь, когда все документы в индексе имеют одинаковые поля, возможности полнотекстового поиска феноменально увеличиваются по мере увеличения оценки каждого документа.
Другой альтернативой разделению данных является сохранение пользовательского _тип в каждом документе, который мы вставляем, например:
PUT db_name / doc / 123"тип": "пользователь",
"id": 123,
"name": "Шубхам",
«сайт»: 1
PUT db_name / doc / website
"тип": "сайт",
"id": 1,
"title": "LinuxHint",
"ссылка": "https: // linuxhint.com / "
Это отличное использование, если вы ищете полное индивидуальное решение.
График удаления типов сопоставления
Поскольку удаление типов сопоставления - это большое изменение, команда ES делает этот процесс медленно. Вот график раскатки, извлеченной из резинки.co:
- Elasticsearch 7.Икс
- В тип параметр в URL-адресах не обязателен. Например, для индексации документа больше не требуется тип документа.
- В _По умолчанию_ тип сопоставления удален.
- Elasticsearch 8.Икс
- В тип параметр больше не поддерживается в URL.
- В include_type_name параметр по умолчанию ложный.
- Elasticsearch 9.Икс
- В include_type_name параметр удален.
Заключение
В этом уроке мы рассмотрели, почему типы сопоставления Elasticsearch были удалены и будут полностью не поддерживаться в следующих версиях.