Java High Level REST Client (7.x) — мощный инструмент для взаимодействия с кластерами Elasticsearch, делающий взаимодействие с сервером более доступным и эффективным. В этом руководстве мы покажем вам, как использовать клиент REST высокого уровня для вызова API-интерфейсов Elasticsearch Java в кластере Alibaba Cloud Elasticsearch.
Убедитесь, что версия вашего кластера такая же, как и версия Java High Level REST Client, которую вы планируете использовать, или новее. Пошаговые инструкции см. в разделе «Создание кластера Alibaba Cloud Elasticsearch».
Включите функцию автоматического индексирования в файле конфигурации YAML. Подробности см. в разделе «Настройка файла YML».
Обеспечите правильную связь, настроив белый список IP-адресов. Если вы получаете доступ к кластеру через Интернет, разрешите запросы с необходимых IP-адресов, следуя инструкциям в разделе Настройка белого списка общедоступных или частных IP-адресов.
Установите Java Development Kit (JDK) версии 1.8 или новее. Дополнительную информацию см. в разделе Установка JDK.
Добавьте необходимые зависимости в файл 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 { MapjsonMap = 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-дневную бесплатную пробную версию
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3