Руководство прикладного разработчика#
О документе#
Настоящий документ предназначен для прикладного разработчика, использующего компонент Поисковый движок (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" : "2.6.0",
"build_type" : "tar",
"build_hash" : "7203a5af21a8a009aece1474446b437a3c674db6",
"build_date" : "2023-02-24T18:58:37.352296474Z",
"build_snapshot" : false,
"lucene_version" : "9.5.0",
"minimum_wire_compatibility_version" : "7.10.0",
"minimum_index_compatibility_version" : "7.0.0"
},
"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/0001" -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 представляет собой поисковую систему. С его помощью возможен поиск данных по следующим категориям:
поиск по полю;
поиск по нескольким индексам;
повышение полей;
сортировка результатов по полям и агрегирование результатов.