Руководство прикладного разработчика#

О документе#

Настоящий документ предназначен для прикладного разработчика, использующего компонент Поисковый движок (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 на производственную среду:

  1. Установите компонент SRHX. С установкой компонента SRHX можно ознакомиться в документации Руководство по установке для компонента SRHX.

Компонент SRHX имеет REST API, это позволяет взаимодействовать с ним с помощью любого клиента, который отправляет HTTP(S)-запросы, например, Postman или curl.

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

  2. Используйте -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/"
    }
    
    

Создание индекса и сопоставления полей с использованием демонстрационных данных

  1. Создайте индекс под названием ACCOUNTS.

    curl -X PUT "https://localhost:Значение, указанное в параметре "http.port" в opensearch.yml/accounts?pretty" -ku admin:admin
    
    

    Вывод команды:

    {
      "acknowledged" : true,
      "shards_acknowledged" : true,
      "index" : "accounts"
    }
    
    
  2. Добавьте поля:

  • имя пользователя – текст;

  • имя – текст;

  • электронная почта – текст;

  • возраст – число.

    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"
    }
    
  1. Проверьте 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"
            }
          }
        }
      }
    }
    
  2. В результате создан новый индекс ACCOUNTS на сервере компонента SRHX.

Добавление данных в индекс

  1. Для добавления данных воспользуйтесь созданным ранее тестовым индексом ACCOUNTS.

  2. С помощью следующего запроса добавьте документ в индекс.

    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
    }
    
  3. Добавьте еще один документ в индекс.

    
    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
    }
    
  4. В результате были загружены два документа в тестовый индекс 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 представляет собой поисковую систему. С его помощью возможен поиск данных по следующим категориям:

  • поиск по полю;

  • поиск по нескольким индексам;

  • повышение полей;

  • сортировка результатов по полям и агрегирование результатов.