Облачная платформаAdvanced

Использование Open Source API Elasticsearch для импорта данных в Elasticsearch

Эта статья полезна?
Язык статьи: Русский
Показать оригинал
Страница переведена автоматически и может содержать неточности. Рекомендуем сверяться с английской версией.

С CSS, вы можете использовать open-source API Elasticsearch на Kibana или сервере ECS для импорта данных в кластер Elasticsearch. Поддерживаются файлы JSON.

Использование Open-Source API Elasticsearch для импорта данных в Kibana

В Kibana вы можете выполнять команды POST для импорта отдельных фрагментов данных с использованием open-source API Elasticsearch.

  1. Войдите в Kibana.
    1. Войдите в консоль управления CSS.
    2. В левой навигационной панели выберите Кластеры > Elasticsearch.
    3. В списке кластеров найдите целевой кластер и нажмите Kibana в Операция колонка для входа в консоль Kibana.
    4. В левой панели навигации выберите Dev Tools.

      Левая часть консоли — поле ввода команды, а треугольный значок в её правом верхнем углу является кнопкой выполнения. Правая часть показывает результат выполнения.

  2. Выполните следующую команду в консоли, чтобы проверить, есть ли в кластере индексы:
    GET _cat/indices?v
    • Если в кластере, в который вы хотите импортировать данные, доступны индексы, создавать индекс не требуется. Перейдите к 7.
    • Если в кластере нет доступных индексов, перейдите к следующему шагу для создания индекса.
  3. Выполните следующую команду для создания индекса, в котором будут храниться импортированные данные, и создайте пользовательскую схему, чтобы определить тип данных.

    Например, выполните следующую команду для создания индекса my_store:

    Пример кода для Elasticsearch 7.x или позже:

    PUT /my_store
    {
    "settings": {
    "number_of_shards": 1
    },
    "mappings": {
    "properties": {
    "productName": {
    "type": "text"
    },
    "size": {
    "type": "keyword"
    }
    }
    }
    }

    Пример кода для Elasticsearch ранее 7.x:

    PUT /my_store
    {
    "settings": {
    "number_of_shards": 1
    },
    "mappings": {
    "products": {
    "properties": {
    "productName": {
    "type": "text"
    },
    "size": {
    "type": "keyword"
    }
    }
    }
    }
    }

  4. Выполняйте команды в Kibana для импорта данных. В приведённом ниже примере импортируется только один элемент данных:

    Пример кода для Elasticsearch 7.x или позже:

    POST /my_store/_bulk
    {"index":{}}
    {"productName":"Latest art shirts for women in 2017 autumn","size":"L"}

    Пример кода для Elasticsearch ранее 7.x:

    POST /my_store/products/_bulk
    {"index":{}}
    {"productName":"Latest art shirts for women in 2017 autumn","size":"L"}

    Вывод команды похож на показанный в Рисунок 1. Если значение ошибки поле в результате равно false, данные успешно импортированы.

    Рисунок 1 Сообщение ответа


Использование Open-Source Elasticsearch API для импорта данных на сервере ECS

On an ECS server, you can run cURL commands to use an open-source Elasticsearch API to import JSON files.

В приведённом ниже примере используется кластер в режиме без безопасности, чтобы показать, как импортировать данные с помощью команд cURL. Для команд для кластера с безопасностью см. Доступ к кластеру Elasticsearch с помощью команд cURL.

  1. Получите приватный сетевой адрес кластера.
    1. Войдите в консоль управления CSS.
    2. В навигационной панели слева выберите Кластеры > Elasticsearch.
    3. В списке кластеров получите приватный IP-адрес целевого кластера из Приватный IP-адрес столбца. Обычно формат IP-адреса выглядит <host>:<port> или <host>:<port>,<host>:<port>.

      Если в кластере только один узел, отображаются IP‑адрес и номер порта этого единственного узла, например, 10.62.179.32:9200. Если в кластере несколько узлов и все они являются data‑узлами, отображаются IP‑адреса и номера портов всех этих узлов; если некоторые из них являются client‑узлами, отображаются только IP‑адреса и номера портов этих client‑узлов; например, 10.62.179.32:9200,10.62.179.33:9200.

  2. Войдите в ECS, который вы собираетесь использовать для импорта данных.
  3. Загрузите файл JSON в ECS.

    Например, сохраните следующие данные в файл JSON и загрузите файл в ECS:

    Для Elasticsearch 7.x или более новых версий:

    {"index": {"_index":"my_store"}}
    {"productName":"Autumn new woman blouses 2019","size":"M"}
    {"index": {"_index":"my_store"}}
    {"productName":"Autumn new woman blouses 2019","size":"L"}

    Для Elasticsearch версий ранее 7.x:

    {"index": {"_index":"my_store","_type":"products"}}
    {"productName":"Autumn new woman blouses 2019","size":"M"}
    {"index": {"_index":"my_store","_type":"products"}}
    {"productName":"Autumn new woman blouses 2019","size":"L"}

  4. Запустите следующую команду в каталоге, где хранится JSON‑файл в ECS, чтобы импортировать JSON‑файл в кластер Elasticsearch.
    curl -X PUT "http://{Private network address and port number of the node}/_bulk" -H 'Content-Type: application/json' --data-binary @test.json

    Заменить {Private network address and port number of the node} на частный сетевой адрес и номер порта узла в кластере. Значение -X параметр является командой и того -H параметр является заголовком сообщения. В предыдущей команде, PUT является значением -X параметр и 'Content-Type: application/json' --data-binary @test.json является значением -H параметр. Не добавляйте -k между параметром и его значением. test.json указывает JSON‑файл для загрузки.

    Note

    В случае сбоя узла кластера, если кластер содержит несколько узлов, вы можете заменить {Частный сетевой адрес и номер порта узла} на частный сетевой адрес и номер порта любого доступного узла в кластере; если кластер содержит только один узел, восстановите этот узел и выполните команду снова.

    Пример: В этом примере предположим, что вам нужно импортировать данные в test.json файл в кластер Elasticsearch, где шифрование соединения отключено, а частный сетевой адрес и номер порта одного узла 192.168.0.90 и 9200 соответственно.

    1. Выполните следующую команду, чтобы создать индекс с именем my_store:

      Пример кода для Elasticsearch 7.x или более поздней версии:

      curl -X PUT http://192.168.0.90:9200/my_store -H 'Content-Type: application/json' -d '
      {
      "settings": {
      "number_of_shards": 1
      },
      "mappings": {
      "properties": {
      "productName": {
      "type": "text"
      },
      "size": {
      "type": "keyword"
      }
      }
      }
      }'

      Пример кода для Elasticsearch более ранних, чем 7.x:

      curl -X PUT http://192.168.0.90:9200/my_store -H 'Content-Type: application/json' -d '
      {
      "settings": {
      "number_of_shards": 1
      },
      "mappings": {
      "products": {
      "properties": {
      "productName": {
      "type": "text"
      },
      "size": {
      "type": "keyword"
      }
      }
      }
      }
      }'

    2. Выполните следующую команду, чтобы импортировать test.json файл:
      curl -X PUT "http://192.168.0.90:9200/_bulk" -H 'Content-Type: application/json' --data-binary @test.json

      В этом случае, если отображается следующая информация, данные успешно импортированы:

      {"took":204,"errors":false,"items":[{"index":{"_index":"my_store","_type":"_doc","_id":"DJQkBIwBbJvUd2769Wi-","_version":1,"result":"created","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":0,"_primary_term":1,"status":201}},{"index":{"_index":"my_store","_type":"_doc","_id":"DZQkBIwBbJvUd2769Wi_","_version":1,"result":"created","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":1,"_primary_term":1,"status":201}}]}