Работа через API
Взаимодействие пользовательских приложений с кластером OpenSearch производится через методы REST API, доступные на машинах с OpenSearch Coordinator. В качестве среды отладки отдельных сценариев работы рекомендуется использовать раздел «Dev Tools».
В данном разделе приведены примеры запросов к REST API, используемые в интерфейсе OpenSearch Dashboards, но в общем виде обращение к кластеру будет производиться посредством запросов вида:
Request type=javacurl --location --request GET 'https://<OS_coordinator_host>:9200/<index_name>/_doc/<document_id>' \ --header 'Authorization: Basic <Place authorization Header here>'
Приступая к работе с индексами и данными, выполните следующие шаги:
- Выполните вход на Платформу через Сервис IAM (услуга 1.13).
- Выберите в списке компонент «Opensearch-dashboard».
Создание индекса
Индексы OpenSearch имеют следующие ограничения на имена:
- Все буквы должны быть строчными.
- Имена индексов не могут начинаться с подчеркивания (
_
) или дефиса (-
). - Имена индексов не могут содержать пробелы, запятые или следующие символы: :,
"
,*
,+
,/
,\
,|
,?
,#
,>
или<
.
Для создания индекса выполните следующее:
-
Выполните вход в интерфейс администрирования под пользователем с правами администратора.
-
Откройте боковое меню и перейдите в раздел «Management» - «Dev Tools».
-
Выполните в консоли запрос на создание индекса.Пример создания индекса:Request type=java
POST j4/_doc { "title": "Movie_1" }
Ответ запроса:Response type=java{ "_index" : "j4", "_id" : "Ahub7oUBpl-8bh-3uZ7Q", "_version" : 1, "result" : "created", "_shards" : { "total" : 2, "successful" : 2, "failed" : 0 }, "_seq_no" : 1, "_primary_term" : 1 }
Добавление полей в индекс без полного перестроения
Для добавления поля в индекс без полного перестроения выполните следующее:
-
Выполните вход в интерфейс администрирования под пользователем с правами администратора.
-
Откройте боковое меню и перейдите в раздел «Management» - «Dev Tools».
-
Выполните в консоли запрос на добавление поля.Пример запроса:Request type=java
PUT j4/_settings?allow_no_indices=true { "index": { "default_pipeline": "" } }
Ответ запроса:Response type=java{ "acknowledged" : true }
Новый параметр появится в списке настроек индекса:Index type=java{ "j4" : { "settings" : { "index" : { "number_of_shards" : "1", "provided_name" : "j4", "default_pipeline" : "", "creation_date" : "1674745545139", "number_of_replicas" : "1", "uuid" : "904KfS1oS32Ez7hI71eKEA", "version" : { "created" : "136227827" } } } } }
Поиск по индексу
Для поиска по индексу выполните следующее:
-
Выполните вход в интерфейс администрирования под пользователем с правами администратора.
-
Откройте боковое меню и перейдите в раздел «Management» - «Dev Tools».
-
Выполните в консоли запрос на поиск.Пример запроса:
GET j4/_search
Ответ запроса:Response type=java{ "took" : 3, "timed_out" : false, "_shards" : { "total" : 1, "successful" : 1, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : { "value" : 2, "relation" : "eq" }, "max_score" : 1.0, "hits" : [ { "_index" : "j4", "_id" : "_hub7oUBpl-8bh-3hp3R", "_score" : 1.0, "_source" : { "title" : "Movie_1 } }, { "_index" : "j4", "_id" : "Ahub7oUBpl-8bh-3uZ7Q", "_score" : 1.0, "_source" : { "title" : "Movie_2" } } ] } }
Просмотр параметров индекса
Для просмотра параметров индекса выполните следующее:
-
Выполните вход в интерфейс администрирования под пользователем с правами администратора.
-
Откройте боковое меню и перейдите в раздел «Management» - «Dev Tools».
-
Выполните в открытой консоли запрос на вывод параметров требуемого индекса.Пример запроса:
GET j4/_settings
Ответ запроса:Response type=java{ "j4" : { "settings" : { "index" : { "creation_date" : "1674745545139", "number_of_shards" : "1", "number_of_replicas" : "1", "uuid" : "904KfS1oS32Ez7hI71eKEA", "version" : { "created" : "136227827" }, "provided_name" : "j4" } } } }
Запись данных
Для записи данных выполните следующее:
-
Выполните вход в интерфейс администрирования под пользователем с правами администратора.
-
Откройте боковое меню слева и перейдите в раздел «Management» - «Dev Tools».
-
Выполните в открытой консоли запрос:Request type=json
POST *index*/_doc/2 { "Description": "To be or not to be, that is the question." }
-
Откройте боковое меню слева и перейдите в раздел «OpenSearch Dashboards» - «Discover».
-
Выполните поиск записей журнала за промежуток времени выполнения команды из шага 3. Для этого нажмите на поле со временем, расположенное справа вверху, затем задайте требуемый интервал и нажмите на кнопку «Update».
Просмотр данных
Для просмотра данных выполните следующее:
-
Выполните вход в интерфейс администрирования под пользователем с правами администратора.
-
Откройте боковое меню слева и перейдите в раздел «Management» - «Dev Tools».
-
Выполните в открытой консоли запрос на поиск:
GET /*index*/_search
Редактирование данных
Для редактирования данных выполните следующее:
-
Выполните вход в интерфейс администрирования под пользователем с правами администратора.
-
Откройте боковое меню слева и перейдите в раздел «Management» - «Dev Tools».
-
Найдите требуемую запись посредством выполнения в открытой консоли запроса:
GET /*index*/_search
-
Выберите интересующую запись и сохраните ее _ID.
-
Внесите изменения в выбранную запись посредством выполненения в открытой консоли запроса:Request type=json
POST /*index* /_update/ *_ID* { "doc": { "title": "test test" } }
-
Проверьте корректность измененных данных:
GET /*index*/_doc/*_ID*
Поиск данных
Поиск по критериям
Для поиска по критериям выполните следующее:
- Выполните вход в интерфейс администрирования под пользователем с правами администратора.
- Откройте боковое меню и перейдите в раздел «Management» - «Dev Tools».
- Выполните в открытой консоли запрос на создание индекса с новым полем.
Пример запроса:
Request type=jsonGET /*index*/_search { "query": { "match": { "year": "1962" } } }
Поиск по диапазону числа/даты
Для поиска по диапазону числа/дат выполните следующее:
-
Выполните вход в интерфейс администрирования под пользователем с правами администратора.
-
Откройте боковое меню и перейдите в раздел «Management» - «Dev Tools».
-
Выполните в открытой консоли соответствующий запрос.Пример поиска по диапазону числа:Request type=json
GET *index*/_search { "query": { "range": { "id": { "gte": 0, "lte": 20 } } } }
Пример поиска по диапазону даты:Request type=jsonGET /*index*/_search { "query": { "range": { "@timestamp": { "gte": "2023-01-30T15:21:41.207Z", "lte": "2023-02-02T15:21:41.207Z" } } } }
#### Полнотекстовый поиск
Для полнотекстового поиска выполните следующее:
1. Выполните вход в интерфейс администрирования под пользователем с правами администратора.
2. Откройте боковое меню и перейдите в раздел «Management» - «Dev Tools».
3. Выполните в открытой консоли соответствующий запрос.
Пример запроса:
```json name=Request type=json
GET /*index*/_search?pretty=true
{"query" : {"match_phrase": {"key": "value"}}}
Нечеткий поиск
Для нечеткого поиска выполните следующее:
- Выполните вход в интерфейс администрирования под пользователем с правами администратора.
- Откройте боковое меню и перейдите в раздел «Management» - «Dev Tools».
- Выполните в открытой консоли соответствующий запрос.
Пример запроса:
Request type=jsonGET /*index*/_search?pretty=true {"query": {"match": {"key": {"query": "value","fuzziness": "auto"}}}}