«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Повысьте качество работы с Elasticsearch с помощью REST-клиента высокого уровня Java ()

Повысьте качество работы с Elasticsearch с помощью REST-клиента высокого уровня Java ()

Опубликовано 1 августа 2024 г.
Просматривать:244

Elevate Your Elasticsearch Experience with Java High Level REST Client ()

Введение

Java High Level REST Client (7.x) — мощный инструмент для взаимодействия с кластерами Elasticsearch, делающий взаимодействие с сервером более доступным и эффективным. В этом руководстве мы покажем вам, как использовать клиент REST высокого уровня для вызова API-интерфейсов Elasticsearch Java в кластере Alibaba Cloud Elasticsearch.

Препараты

Шаг 1. Создайте кластер Elasticsearch

Убедитесь, что версия вашего кластера такая же, как и версия Java High Level REST Client, которую вы планируете использовать, или новее. Пошаговые инструкции см. в разделе «Создание кластера Alibaba Cloud Elasticsearch».

Шаг 2. Включите автоматическое индексирование

Включите функцию автоматического индексирования в файле конфигурации YAML. Подробности см. в разделе «Настройка файла YML».

Шаг 3. Настройте белый список IP-адресов

Обеспечите правильную связь, настроив белый список IP-адресов. Если вы получаете доступ к кластеру через Интернет, разрешите запросы с необходимых IP-адресов, следуя инструкциям в разделе Настройка белого списка общедоступных или частных IP-адресов.

Шаг 4. Установите JDK

Установите Java Development Kit (JDK) версии 1.8 или новее. Дополнительную информацию см. в разделе Установка JDK.

Шаг 5. Создайте проект Java Maven

Добавьте необходимые зависимости в файл pom.xml. Измените номер версии в зависимостях с 7.x на конкретную версию клиента REST высокого уровня, которую вы используете.


    org.elasticsearch.client
    elasticsearch-rest-high-level-client
    7.x


    org.apache.logging.log4j
    log4j-core
    2.20.0


    org.apache.logging.log4j
    log4j-api
    2.20.0

Пример: Управление индексом

Ниже приведен пример создания и удаления индекса с помощью клиента REST высокого уровня. Замените заполнители {} на свои параметры.

import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.nio.client.HttpAsyncClientBuilder;
import org.elasticsearch.action.delete.DeleteRequest;
import org.elasticsearch.action.delete.DeleteResponse;
import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.client.*;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

public class RestClientExample {
    private static final RequestOptions COMMON_OPTIONS;

    static {
        RequestOptions.Builder builder = RequestOptions.DEFAULT.toBuilder();
        builder.setHttpAsyncResponseConsumerFactory(
                new HttpAsyncResponseConsumerFactory
                        .HeapBufferedResponseConsumerFactory(30 * 1024 * 1024));
        COMMON_OPTIONS = builder.build();
    }

    public static void main(String[] args) {
        final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
        credentialsProvider.setCredentials(AuthScope.ANY, 
            new UsernamePasswordCredentials("{Username}", "{Password}"));

        RestClientBuilder builder = RestClient.builder(new HttpHost("{Endpoint of the Elasticsearch cluster}", 9200, "http"))
                .setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {
                    @Override
                    public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) {
                        return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
                    }
                });

        RestHighLevelClient highClient = new RestHighLevelClient(builder);

        try {
            Map jsonMap = new HashMap();
            jsonMap.put("{field_01}", "{value_01}");
            jsonMap.put("{field_02}", "{value_02}");

            IndexRequest indexRequest = new IndexRequest("{index_name}", "_doc", "{doc_id}").source(jsonMap);
            IndexResponse indexResponse = highClient.index(indexRequest, COMMON_OPTIONS);
            long version = indexResponse.getVersion();
            System.out.println("Index document successfully! "   version);

            DeleteRequest deleteRequest = new DeleteRequest("{index_name}", "_doc", "{doc_id}");
            DeleteResponse deleteResponse = highClient.delete(deleteRequest, COMMON_OPTIONS);
            System.out.println("Delete document successfully! \n"   deleteResponse.toString());

            highClient.close();
        } catch (IOException ioException) {
            ioException.printStackTrace();
        }
    }
}

Конфигурация с высоким параллелизмом

Для сценариев с высоким уровнем параллелизма увеличьте количество клиентских подключений:

httpClientBuilder.setMaxConnTotal(500);
httpClientBuilder.setMaxConnPerRoute(300);

Пример фрагмента кода:

String host = "127.0.0.1";
int port = 9200;
String username = "elastic";
String password = "passwd";
final int max_conn_total = 500;
final int max_conn_per_route = 300;

RestHighLevelClient restHighLevelClient = new RestHighLevelClient(
  RestClient.builder(new HttpHost(host, port, "http")).setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {
    public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) {
      httpClientBuilder.setMaxConnTotal(max_conn_total);
      httpClientBuilder.setMaxConnPerRoute(max_conn_per_route);
      return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
    }
  })
);

Более подробную информацию о функциях и конфигурациях см. в официальной документации Java High Level REST Client.

Заключение

Использование клиента REST высокого уровня Java обеспечивает эффективное взаимодействие с вашим кластером Alibaba Cloud Elasticsearch. Следуйте этому руководству, чтобы максимально эффективно использовать настройку Elasticsearch.
Готовы начать работу с Elasticsearch в облаке Alibaba? Ознакомьтесь с нашими специализированными облачными решениями и услугами, которые превратят ваши данные в визуальный шедевр.

Нажмите здесь, чтобы начать 30-дневную бесплатную пробную версию

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/a_lucas/elevate-your-elasticsearch-experience-with-java-high-level-rest-client-7x-348k?1 Если есть какие-либо нарушения, свяжитесь с Study_golang. @163.com удалить
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3