Elasticsearch 101 с питоном

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

Elasticsearch является распределенным, что означает, что индексы можно разделить на сегменты, и каждый сегмент может иметь ноль или более реплик. Каждый узел содержит один или несколько сегментов и выступает в качестве координатора для делегирования операций нужным сегментам.

Я приведу практический пример того, как работает Elasticsearch, но перед этим мы обсудим некоторые основные концепции Elasticsearch.

Кластеры – это набор из одного или нескольких узлов, которые вместе содержат все данные и обеспечивают функции поиска и индексирования по узлам. Узлы – это отдельные серверы, входящие в состав кластеров, которые участвуют в индексировании и поиске.

Документ – это отдельная единица информации в формате JSON, которую можно индексировать. Указатель – это набор документов со схожими характеристиками. Указатель крикета может содержать несколько документов, связанных с крикетом. Тип — это раздел для документов с набором похожих полей, вы можете определить несколько «типов» в любом индексе.

Разделения – это часть индекса. Каждый сегмент сам по себе является индексом и может размещаться на любом узле в кластере. Реплики — это копии осколков. Отображение – это схема данных индекса, способ хранения данных. Анализатор получает поток данных, считывает и интерпретирует его определенным образом, мы можем выбрать анализатор из многих вариантов.

Теперь мы будем практически реализовывать и играть с этими концепциями. Во-первых, вам нужно скачать и извлечь эластичный поиск по этой ссылке https://www.elastic.co/downloads/elasticsearch. После загрузки извлеките файлы, создайте учетную запись для управления эластичным поиском в файле config/user_role и добавьте права администратора для вновь созданного пользователя. Мы будем использовать учетные данные этой недавно созданной учетной записи при управлении эластичным поиском с использованием кода Python.

Теперь запустите файл bin/elasticsearch (пакетный файл Windows), после успешного выполнения elasticsearch мы сможем получить к нему доступ на локальном хосте: 9200, вас спросят об учетных данных, после успешной проверки пользователя вам будет показано что-то вроде этого.

Теперь создайте файл python и используйте приведенный ниже код для подключения к эластичному поиску, работающему на порту 9200, с учетными данными вашей учетной записи. для verify_cert установлено значение «false», потому что мы не запускаем его локально без SSL-сертификата.

Теперь мы создадим новый индекс, я назову его «фильмы», чтобы в нем могли быть документы, связанные с фильмами, и теперь мы можем увидеть, есть ли у этого индекса существующее сопоставление.

Если у индекса нет существующего сопоставления, мы можем создать свое собственное. Далее мы создаем сопоставление для нашего индекса фильмов, где мы указываем, что будет свойство города, свойство с именем страна и свойство с именем DateTime, каждое из которых будет иметь свои собственные типы данных и ограничения данных.

Теперь, после настройки сопоставления, мы можем проверить, успешно ли установлено сопоставление, мы можем проверить, существует ли определенный индекс, и можем удалить индекс, используя следующие команды.

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

Теперь, когда мы установили индекс, мы можем увидеть, как мы можем вставлять данные в индекс. Мы будем создавать JSON с периметрами, установленными в сопоставлении или, если не задано какое-либо свойство в файле JSON, и вставлять, предоставляя имя индекса с уникальным идентификатором документа, если аналогичный идентификатор существует ранее, содержимое будет обновлено и после прочтения документа он скажет увеличенный номер версии.

Мы можем получить документ, явно указав идентификатор документа, или мы также можем искать среди документов, используя регулярное выражение для поиска по данным документов или запроса, который сравнивается.

Если мы хотим удалить документ, мы можем это сделать, явно указав идентификатор документа в файле index.

Это было все о манипулировании и управлении индексами и документами.

Мы также обсудили кластеры, мы можем получить информацию о кластерах с помощью этой команды

Анализаторобрабатывает поступающие данные определенным образом, и нам предоставлено несколько встроенных анализаторов, мы можем продемонстрировать, чем они отличаются в обработке, используя их все по очереди на одном вводе данных .

Вы можете попробовать эти анализаторы и весь код, упомянутый в блоге, используя этот код https://github.com/hinanb/Elasticsearch-with-python.