Индексы и документы Elasticsearch
Чтобы эффективно использовать Elasticsearch, важно понимать ключевые понятия, такие как индексы и документы. В этой статье мы рассмотрим, что такое индексы и документы в Elasticsearch.
Что такое индекс?
Представьте себе детскую комнату с ящиком, полным игрушек. В Elasticsearch индекс служит той же цели — он действует как репозиторий для связанных данных. Думайте об этом как о наборе документов, сгруппированных вместе для облегчения поиска и извлечения.
Чтобы визуализировать это, давайте рассмотрим простое представление индекса фильмов:
movies ├─ Document 1 ├─ Document 2 ├─ Document 3 ├─ ...
Каждый отдельный фрагмент данных в индексе называется документом .
Вы можете создать индекс с помощью Sigmie следующим образом:
$index = $sigmie->newIndex('movies')->create();
Что такое документ?
Документ — это просто JSON, хранящийся в индексе.
Document = JSON
В Elasticsearch Document представлен как объект JSON и хранится в Index . Он содержит фактические данные, которые вы хотите найти, проанализировать или получить.
Вот пример того, как может выглядеть документ:
{ "title": "The Shawshank Redemption" }
Документ содержит одно поле title
со значением The Shawshank Redemption
.
Структура JSON позволяет нам представлять различные типы данных и структуры. Структура документа — это самая важная часть достижения желаемого с помощью Elasticsearch.
Вот как вы можете создать экземпляр документа Elasticsearch в Sigmie :
use Sigmie\Document\Document; $document = new Document(['name' => 'The Shawshank Redemption']),
Что такое индексация
Индексирование — это простое действие по добавлению документов в индекс . Неважно, для чего вы используете Elasticsearch, индексация важна просто потому, что вы ничего не можете сделать без документов в вашем индексе.
И это способ проиндексировать документ с помощью Sigmie :
$index->collect()->add($document);
Пример
Вот пример, демонстрирующий, как добавить три документа фильма в наш индекс «фильмы»:
$documents = [ new Document(['title' => 'The Shawshank Redemption']), new Document(['title' => 'Inception']), new Document(['title' => 'Pulp Fiction']), ]; $index->collect()->merge($documents);
В приведенном выше коде мы создаем массив Document
объектов, каждый из которых представляет фильм. Вызывая merge
метод для собранного индекса и передавая документы, мы добавляем их в индекс
Вот как выглядит индекс после объединения документов.
movies ├─ "The Shawshank Redemption" ├─ "Inception" ├─ "Pulp Fiction"