Подключите Elasticsearch, используя java - PullRequest
1 голос
/ 11 февраля 2020

Я новичок в java из python. Я знаю, что есть много ответов, чтобы связать ElasticSearch с java. Но мне трудно это понять, а некоторые устарели. В python я могу легко импортировать elasticsearch модуль и подключаться к нему.

Вот код в python:

from elasticsearch import Elasticsearch
es = Elasticsearch('localhost', port=9200, http_auth=('username', 'password'), scheme="http")

Но в java я включил elasticsearch maven зависимость в pom.xml. Я хочу подключиться к elasticsearch. Я узнал, что RestHighLevelClient может сделать эту работу. Я нашел этот код. Но не знаю, как подключить его к Elasti c Search.

public RestHighLevelClient createESRestClient() {
    CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
    credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(esUserName, esPassword));

    RestClientBuilder restClientBuilder = RestClient
            .builder(new HttpHost(esRestclientHost, 9200, "http"));
    // Use this one if your ElasticSearch server is setup to use username & password authentication
    if (esAuthentication) {
        restClientBuilder.setHttpClientConfigCallback(h -> h.setDefaultCredentialsProvider(credentialsProvider));
    }

    return new RestHighLevelClient(restClientBuilder);
}

Любой может мне помочь или показать пример кода для подключения к Elasti c Search с помощью java. В python это было сделано в две строки. Помоги мне с java.

Ответы [ 2 ]

2 голосов
/ 11 февраля 2020

Для подключения эластичного поиска с помощью java вы можете использовать следующий код:

public class ElasticsearchClient {
//private static final Logger log = LoggerFactory.getLogger(ElasticsearchClient.class);
private final RestHighLevelClient client;

public ElasticsearchClient(ElasticsearchConfig elasticsearchConfig) {
    client = new RestHighLevelClient(RestClient.builder(new HttpHost(elasticsearchConfig.getHost(),
            elasticsearchConfig.getPort(), "http")));
}
}

asticsearchConfiguration:

host: localhost

port: 9200
  • Для получения дополнительной информации вы можно увидеть это и это .

Вы можете даже следовать инструкциям из этой документации

Вам необходимо Добавьте эту зависимость в pom.xml

<dependency>
        <groupId>org.elasticsearch.client</groupId>
        <artifactId>elasticsearch-rest-high-level-client</artifactId>
        <version>${es.client.version}</version>
</dependency>

Обновление 1

Вместо отдельного файла конфигурации, чтобы добавить хост и порт внутри самого кода, вы можете использовать ниже упомянутый код:

public class ElasticsearchClient {
private static final Logger log = LoggerFactory.getLogger(ElasticsearchClient.class);
private final RestHighLevelClient client;


public ElasticsearchClient(ElasticsearchConfig elasticsearchConfig) {
    client = new RestHighLevelClient(RestClient.builder(new HttpHost("localhost", 9200, "http")));
}
1 голос
/ 11 февраля 2020

Для текущей версии Java REST Client версии 7.5 следуйте инструкциям на ElasticSearch Client :

RestHighLevelClient client = new RestHighLevelClient(
        RestClient.builder(
                new HttpHost("localhost", 9200, "http"),
                new HttpHost("localhost", 9201, "http")));

Maven-репозиторий , ElasticSearch Client:

<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>elasticsearch-rest-high-level-client</artifactId>
    <version>7.5.2</version>
</dependency>

Все функции API указываются на веб-сайте клиента: поиск, мульти-поиск, индекс и т. Д. c.

Основа "Java Низкоуровневый клиент REST" c Аутентификация определена здесь :

final CredentialsProvider credentialsProvider =
    new BasicCredentialsProvider();
credentialsProvider.setCredentials(AuthScope.ANY,
    new UsernamePasswordCredentials("user", "password"));

RestClientBuilder builder = RestClient.builder(
    new HttpHost("localhost", 9200))
    .setHttpClientConfigCallback(new HttpClientConfigCallback() {
        @Override
        public HttpAsyncClientBuilder customizeHttpClient(
                HttpAsyncClientBuilder httpClientBuilder) {
            return httpClientBuilder
                .setDefaultCredentialsProvider(credentialsProvider);
        }
    });
...