В этой статье мы хотим рассказать вам об OpenSearch и привести пример создания индекса с маппигом. OpenSearch — это поисковая платформа с открытым исходным кодом, которая позволяет веб-мастерам и владельцам сайтов индексировать содержимое в своих приложениях. OpenSearch использует Elasticsearch для индексации и поиска, а также OpenSearch Dashboards для визуализации данных.
Что такое маппиг?
Маппиг (mapping) — это схема, описывающая структуру данных, которые будут проиндексированы в индексе OpenSearch. Маппиг определяет, какие поля будут проиндексированы, какие типы данных они могут принимать, и какие атрибуты у этих полей. Маппинги могут быть созданы вручную или автоматически с помощью инструментов Elasticsearch.
Пример маппинга в OpenSearch
Пример маппинга для простого блога:
Создание индекса:
Для начала нужно создать индекс с маппигом, который будет использоваться для хранения данных нашего блога. Откройте Elasticsearch и выполните следующую команду:
1 | curl -XPUT "http://localhost:9200/my_blog" -H 'Content-Type: application/json' -d '{"mappings": {}}' |
Эта команда создаст индекс my_blog с пустым маппигом.
Определение типов документов:
Теперь нужно определить типы документов, которые будут храниться в индексе. Для нашего блога мы создадим два типа документов: post и comment. Для этого добавим следующие маппинги в файл my_blog.json в Elasticsearch:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | { "mappings": { "properties": { "title": { "type": "text" }, "body": { "properties": { "content": { "type": "text", "index": "analyzed" } } } }, "_default_": { "type": "<тип документа>" } } } |
В этом примере мы определили два свойства для документов: заголовок и тело. Заголовок будет текстовым полем, а тело будет анализируемым текстовым полем. Также мы определили тип документа по умолчанию, который будет использоваться, если документ не будет иметь явного типа.
Индексация документов:
После определения маппинга можно начинать индексировать документы в индекс. Для этого создадим несколько документов с помощью Elasticsearch API:
Для индексации поста:
1 2 3 | curl -XPOST "http://localhost:9200/<индекс>/_bulk?pretty" -d ' { "index" : { "_id" : "1" } } { "title" : "Заголовок поста 1", "body" : "Тело поста 1" } |
Для индексации комментария:
1 2 3 | curl -XPOST "http://localhost:9200/<индекс>/<тип документа>/_bulk?pretty" -d ' { "index" : { "_id" : "2" } } { "author" : "Автор комментария 1", "comment" : "Комментарий 1" }' |
Здесь мы проиндексировали два поста и два комментария.
Поиск документов:
Теперь мы можем выполнить поиск в индексе, чтобы найти все документы, соответствующие запросу. Например, мы можем найти все посты, используя следующий запрос:
1 2 3 4 5 6 | curl -XGET "http://localhost:9200/_search?pretty" -d '{ "query": { "match_all": {} }, "size": 10 }' |
Этот запрос возвращает 10 документов, соответствующих запросу.
Заключение
OpenSearch и Elasticsearch являются мощными инструментами для создания поисковых платформ. Они предоставляют множество возможностей для индексации и поиска данных. Маппиги позволяют гибко настраивать структуру данных, что делает их более эффективными для поиска. Надеемся, что этот пример поможет вам начать работу с OpenSearch и Elasticsearch.