Подключение к эластичному поиску, работающему в контейнере docker, с помощью пружинного адаптера - PullRequest
0 голосов
/ 30 марта 2020

У меня работает эластичный поиск в контейнере docker, и я пытаюсь отправить ему запрос с помощью API весенней загрузки, однако я получаю следующую ошибку:

None of the configured nodes are available: [{#transport#-1}{0XOSBdJsQ5KYLqkzc36urw}{172.18.0.4}{172.18.0.4:9300}]

Это мой кластер информация об узле:

    {
    "name": "Venus",
    "transport_address": "172.18.0.4:9300",
    "host": "172.18.0.4",
    "ip": "172.18.0.4",
    "version": "2.2.2",
    "build": "fcc01dd",
    "http_address": "172.18.0.4:9200",
    "settings": {
    "cluster": {
    "name": "elasticsearch"
    },
...

зависимости, которые я добавил в pom. xml:

    <dependency>
        <groupId>org.elasticsearch</groupId>
        <artifactId>elasticsearch</artifactId>
        <version>5.5.0</version>
    </dependency>
    <dependency>
        <groupId>org.elasticsearch.client</groupId>
        <artifactId>transport</artifactId>
        <version>5.5.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>2.7</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.7</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-web</artifactId>
        <version>2.7</version>
    </dependency>

, а также я добавил это свойство:

<elasticsearch.version>5.5.0</elasticsearch.version>

my application.properties:

elasticsearch.host=172.18.0.4
elasticsearch.port=9300

класс конфигурации:

import org.elasticsearch.transport.client.PreBuiltTransportClient;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.net.InetAddress;
import java.net.UnknownHostException;

@Configuration
class config{
    @Value("${elasticsearch.host:172.18.0.4}")
    public String host;
    @Value("${elasticsearch.port:9300}")
    public int port;
    public String getHost() {
        return host;
    }
    public int getPort() {
        return port;
    }

    @Bean
    public Client client(){

        TransportClient client = null;
        try{
            System.out.println("host: "+ host+" port: "+port);
            client = new PreBuiltTransportClient(Settings.EMPTY)
                    .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(host), port));
        } catch (UnknownHostException e) {
            e.printStackTrace();
        }
        return client;
    }
}

и, наконец, мой класс контроллера:

import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.client.Client;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.Map;

@RestController
public class UserController {

    @Autowired
    Client client;

    @GetMapping("/view/{id}")
    public Map<String, Object> view(@PathVariable final String id) {
        GetResponse getResponse = client.prepareGet("users", "employee", id).get();
        return getResponse.getSource();
    }


}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...