У меня работает эластичный поиск в контейнере 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();
}
}