Руководство прикладного разработчика#
О документе#
Настоящий документ предназначен для прикладного разработчика, использующего компонент Поисковый движок (SRHX) в своем приложении.
Расшифровку основных понятий смотрите в перечне Термины и определения.
Системные требования#
Требования к окружению для использования компонента SRHX приведены в документе Руководство по установке в разделе Системные требования.
Подключение и конфигурирование#
Для целей разработки компонент SRHX обладает внешним Rest Api. SRHX Rest Api сохраняет преемственность по сравнению с Elasticsearch OSS REST API и OpenSearch REST API. Большая часть клиентского кода, работавшего с Elasticsearch OSS и OpenSearch будет работать с SRHX.
С документацией по Rest Api детально можно ознакомиться по ссылке https://opensearch.org/docs/2.11/api-reference/index/.
Конфигурирование прикладным разработчиком компонент SRHX не требует.
Миграция на текущую версию#
Миграция на текущую версию не требуется.
Быстрый старт#
Убедитесь, что выполнены все условия, указанные в Руководстве по установке в разделе Системные требования.
Ниже описаны процессы:
установки и запуска компонента SRHX производственной среде;
создание индекса;
добавление данных в индекс;
поиска данных.
Установка и запуск компонента SRHX на производственной среде
В случае, если компонент SRHX уже установлен на производственной среде, этот пункт можно пропустить.
Для того, чтобы выполнить установку компонента SRHX на производственную среду:
Установите компонент SRHX. С установкой компонента SRHX можно ознакомиться в документации Руководство по установке для компонента SRHX.
Компонент SRHX имеет REST API, это позволяет взаимодействовать с ним с помощью любого клиента, который отправляет HTTP(S)-запросы, например, Postman или curl.
После установки проверьте связь с кластером. Убедитесь, что все службы запущены.
Используйте -k (–insecure) для отключения проверки имени хоста, поскольку конфигурация безопасности по умолчанию использует демонстрационные сертификаты. Используйте -u для передачи имени пользователя и пароля по умолчанию ( admin:admin).
curl https://localhost:Значение, указанное в параметре "http.port" в opensearch.yml -ku admin:adminПример ответа:
{ "name" : "opensearch-node1", "cluster_name" : "opensearch-cluster", "cluster_uuid" : "W0B8gPotTAajhMPbC9D4ww", "version" : { "distribution" : "opensearch", "number" : "x.x.x", "build_type" : "tar", "build_hash" : "7203a5af21a8a009aece1474446b437a3c674db6", "build_date" : "xxxx-xx-xxT18:58:37.352296474Z", "build_snapshot" : false, "lucene_version" : "x.x.x", "minimum_wire_compatibility_version" : "x.xx.x", "minimum_index_compatibility_version" : "x.x.x" }, "tagline" : "The OpenSearch Project: https://opensearch.org/" }
Создание индекса и сопоставления полей с использованием демонстрационных данных
Создайте индекс под названием ACCOUNTS.
curl -X PUT "https://localhost:Значение, указанное в параметре "http.port" в opensearch.yml/accounts?pretty" -ku admin:adminВывод команды:
{ "acknowledged" : true, "shards_acknowledged" : true, "index" : "accounts" }Добавьте поля:
имя пользователя – текст;
имя – текст;
электронная почта – текст;
возраст – число.
curl -X PUT "http://localhost:Значение, указанное в параметре "http.port" в opensearch.yml/accounts" -ku admin:admin -H 'Content-Type: application/json' -d' { "mappings": { "properties": { "username": { "type": "text" }, "name": { "type": "text" }, "email": { "type": "text" }, "age": { "type": "integer" } } } }Вывод команды:
{ "acknowledged": true, "shards_acknowledged": true, "index": "accounts" }
Проверьте mapping:
curl -X GET "https://localhost:Значение, указанное в параметре "http.port" в opensearch.yml/accounts/_mapping?pretty" -ku admin:adminВывод команды:
{ "accounts" : { "mappings" : { "properties" : { "age" : { "type" : "integer" }, "email" : { "type" : "text" }, "name" : { "type" : "text" }, "username" : { "type" : "text" } } } } }В результате создан новый индекс ACCOUNTS на сервере компонента SRHX.
Добавление данных в индекс
Для добавления данных воспользуйтесь созданным ранее тестовым индексом ACCOUNTS.
С помощью следующего запроса добавьте документ в индекс.
curl -X PUT "https://localhost:Значение, указанное в параметре "http.port" в opensearch.yml/accounts/_doc/0002" -ku admin:admin -H 'Content-Type: application/json' -d' { "username" : "Admin", "name" : "Иван Иванов", "email" : "iivanov@test.ru", "age" : "35" }Вывод команды:
{ "_index": "accounts", "_id": "0001", "_version": 1, "result": "created", "_shards": { "total": 2, "successful": 2, "failed": 0 }, "_seq_no": 2, "_primary_term": 1 }Добавьте еще один документ в индекс.
curl -X PUT "https://localhost:Значение, указанное в параметре "http.port" в opensearch.yml/accounts/_doc/0002" -ku admin:admin -H 'Content-Type: application/json' -d' { "username" : "Manager", "name" : "Артем Артемов", "email" : "aartemov@test.ru", "age" : "50" }Вывод команды:
{ "_index": "accounts", "_id": "0002", "_version": 1, "result": "created", "_shards": { "total": 2, "successful": 2, "failed": 0 }, "_seq_no": 3, "_primary_term": 1 }В результате были загружены два документа в тестовый индекс ACCOUNTS.
Использование поискового API компонента SRHX
Пример. Найти все документы в тестовом индексе ACCOUNTS с возрастом менее 40 лет.
curl -X GET "https://localhost:Значение, указанное в параметре "http.port" в opensearch.yml/accounts/_search/?pretty" -ku admin:admin -H 'Content-Type: application/json' -d'
{
"query": {
"range" : {
"age" : {
"lt" : 40
}
}
}
}
Результат работы команды:
{
"took" : 2,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 1,
"relation" : "eq"
},
"max_score" : 1.0,
"hits" : [
{
"_index" : "accounts",
"_type" : "_doc",
"_id" : "1",
"_score" : 1.0,
"_source" : {
"username" : "Admin",
"name" : "Иван Иванов",
"email" : "iivanov@test.ru",
"age" : "35"
}
}
]
}
}
Таким образом отображается документ, соответствующий критериям поиска.
Использование программного компонента SRHX#
Компонент SRHX представляет собой поисковую систему. С его помощью возможен поиск данных по следующим категориям:
поиск по полю;
поиск по нескольким индексам;
повышение полей;
сортировка результатов по полям и агрегирование результатов.