Какво представляват типовете картографиране?
В Elasticsearch всеки документ принадлежи на индекс и тип. Индексът може да се разглежда като база данни, докато типът може да се разглежда като таблица в сравнение с релационна база данни. Тип на картографиране е логически дял на обект с други обекти, които принадлежат към други типове картографиране в същия индекс.
Всеки тип на картографиране има свои собствени полета. Например тип потребител може да има следните полета:
„id“: 123,
"name": "Shubham",
"уебсайт": 1
Друг тип картографиране в същия индекс уебсайт може да има следните полета, които са напълно различни от потребител Тип:
"id": 1,
"title": "LinuxHint",
"link": "https: // linuxhint.com / "
Докато търсите документ в индекс, търсенето може да е ограничено до един документ, като се посочи едно поле като:
ВЗЕМЕТЕ idx_name / потребител, уебсайт / _search"заявка":
"съвпада":
"id": 1
The _Тип полето на документите беше комбинирано с неговото _документ за самоличност за генериране на _uid поле, така документи със същото _документ за самоличност може да съществува в един индекс.
Прочетете урок за Elasticsearch за начинаещи за по-задълбочено разбиране на Elasticsearch Architecture и започнете с него с Install ElasticSearch на Ubuntu.
Защо се премахват типовете на картографиране?
Точно както казахме по-горе, докато обяснявахме как индексите и типовете са подобни на база данни и таблица в релационна база данни, екипът на Elasticsearch смята същото, но това не е така, тъй като Lucene Engine не следва същата аналогия. Това се дължи на следните причини:
- В релационна база данни таблиците са независими една от друга и име на колоните, дори ако са еднакви, нямат връзка помежду си. Това не е така с полетата в типовете на картографиране, както в ES, полета със същото име се третират като едно и също поле на Lucene Engine вътрешно.
- В горния пример полето _документ за самоличност в потребител тип и уебсайт type се съхранява в едно и също поле и трябва да има абсолютно същия тип, което може да доведе до разочарование и объркване.
- Съхраняването на обекти без общи полета спира Lucene за ефективно компресиране на документи.
Алтернативи на типовете на картографиране
Въпреки че решението е взето, все още трябва да отделим различни видове данни. Първата алтернатива е сега отделни документи в собствен индекс което има две предимства:
- Сега, когато данните са често срещани във всеки индекс, Lucene може много лесно да приложи свои собствени техники за компресиране на данни.
- Сега, когато всички документи в индекса имат едни и същи полета, способностите за търсене на пълен текст се увеличават феноменално, тъй като точкуването на всеки документ се е увеличило.
Друга алтернатива на разделянето на данните е поддържането на потребителски _Тип поле във всеки документ, който вмъкваме, като:
ПОСТАВЕТЕ db_name / doc / 123"type": "потребител",
„id“: 123,
"name": "Shubham",
"уебсайт": 1
ПОСТАВЕТЕ db_name / doc / уебсайт
"type": "уебсайт",
"id": 1,
"title": "LinuxHint",
"link": "https: // linuxhint.com / "
Това е отлично използване, ако търсите цялостно персонализирано решение.
График за премахване на типовете картографиране
Тъй като премахването на типовете на картографиране е голяма промяна, екипът на ES прави процеса бавно. Ето график за изваждането, извлечено от ластик.съвместно:
- Elasticsearch 7.х
- The Тип параметър в URL адресите не са задължителни. Например индексирането на документ вече не изисква тип документ.
- The _по подразбиране_ типът на картографиране е премахнат.
- Elasticsearch 8.х
- The Тип параметър вече не се поддържа в URL адреси.
- The включва_име_тип параметърът по подразбиране е невярно.
- Elasticsearch 9.х
- The включва_име_тип параметърът е премахнат.
Заключение
В този урок разгледахме защо бяха премахнати типовете Elasticsearch Mapping и ще бъдат напълно неподдържани в следващите версии.