【问题标题】:AbstractElasticsearchRepository : Cannot create index: Connection refused; nested exception is java.lang.RuntimeException: Connection refusedAbstractElasticsearchRepository:无法创建索引:连接被拒绝;嵌套异常是 java.lang.RuntimeException: Connection denied
【发布时间】:2020-11-29 11:43:23
【问题描述】:

我正在实施一个集成了 Kafka、Elasticsearch 和 Kibana 的微服务项目。我已经为容器之间的通信配置了网络,但是我无法让数据收集微服务与运行 ElasticSearch oss 映像的容器在其 7.6.2 版本中进行通信。

在启动 Spring Boot 微服务时可以看到如下日志:

INFO 1 --- [ main] o.s.d.elasticsearch.support.VersionInfo : Version Spring Data Elasticsearch: 4.0.2.RELEASE
INFO 1 --- [ main] o.s.d.elasticsearch.support.VersionInfo : Version Elasticsearch Client in build: 7.6.2
INFO 1 --- [ main] o.s.d.elasticsearch.support.VersionInfo : Version Elasticsearch Client used: 7.6.2
WARN 1 --- [ main] .d.e.r.s.AbstractElasticsearchRepository : Cannot create index: Connection refused; nested exception is java.lang.RuntimeException: Connection refused

下面是 ElasticSearch 容器配置:

elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch-oss:7.6.2
    environment:
      - discovery.type=single-node
      - cluster.name=covid-tweets-es-cluster
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - elasticsearch-data:/usr/share/elasticsearch/data
    ports:
      - 9300:9300
      - 9200:9200
    networks:
      - covid_processor_network
    

这是微服务的 Spring Data ElasticSearch 配置:

## Kafka Binder Props
spring.cloud.stream.kafka.binder.brokers: kafka:9092
spring.cloud.stream.kafka.binder.auto-create-topics: false
spring.cloud.stream.kafka.binder.configuration.auto.offset.reset: latest
spring.cloud.stream.bindings.processed-tweets.group: tweets-collector
## Persistence
spring.data.elasticsearch.repositories.enabled: true
spring.data.elasticsearch.cluster-nodes: elasticsearch:9300
spring.data.elasticsearch.cluster-name: covid-tweets-es-cluster
spring.data.elasticsearch.rest.uris: elasticsearch:9200

我可以从微服务容器连接到 elasticsearch 容器

这是客户端代码,很简单,它只是使用了一个实现 ElasticsearchRepository 的 TweetReopistory 存储库

@StreamListener(AppStreamsConfig.PROCESSED_TWEETS_CHANNEL)
    public void onNewProcessedTweet(
            @Payload final TweetDTO newProcessedTweet,
            @Header(KafkaHeaders.RECEIVED_TOPIC) String topic,
            @Header(KafkaHeaders.RECEIVED_PARTITION_ID) Integer partition,
            @Header(KafkaHeaders.OFFSET) Long offset,
            @Header(IntegrationMessageHeaderAccessor.DELIVERY_ATTEMPT) Integer deliveryAttempt) {

        log.info("NewsProcessedTweet with id '{}' and text '{}' received from bus. topic: {}, partition: {}, offset: {}, deliveryAttempt: {}",
                newProcessedTweet.getId(), newProcessedTweet.getText(), topic, partition, offset, deliveryAttempt);

        try {
            tweetService.save(newProcessedTweet);
        } catch (final Exception ex) {
            ex.printStackTrace();
            log.error("Collect Tweet Exception -> " + ex.getMessage());
        }
    }

@Service("tweetsService")
@RequiredArgsConstructor
public class TweetsServiceImpl implements ITweetsService {

    /**
     * Tweets Repository
     */
    private final TweetsRepository tweetsRepository;
    private final TweetDtoMapper tweetDtoMapper;

    @Override
    public void save(TweetDTO tweetDto) {
        Assert.notNull(tweetDto, "Tweet can not be null");

        final TweetEntity tweetToSave = tweetDtoMapper.dtoToEntity(tweetDto);
        tweetsRepository.save(tweetToSave);
    }

有人知道我做错了什么吗?谢谢

【问题讨论】:

  • Ping 它并不意味着您可以连接到它 - 只是它响应 ICMP 包。例如,您可以使用wgetcurltelnetnc 检查连接。
  • 连接被拒绝听起来像是用户名/密码问题
  • @MatsLindh 没错,我已经使用 curl 更新了问题
  • 您正在配置端口 9300 上的传输客户端连接和端口 9200 上的其余客户端连接。您要使用哪一个?

标签: java spring-boot elasticsearch spring-data spring-data-elasticsearch


【解决方案1】:

您使用的是哪个客户端? RestHighLevelClient 还是 TransportClient? 如果使用 RestHighLevelClient,请尝试使用 9200 端口。

同时分享客户端使用代码以便更好地理解。

【讨论】:

  • 我已经通过添加客户端代码更新了问题
  • 通过 elasticsearch:9200 更改弹性搜索:9300 不起作用,我得到同样的错误
  • Follow this link - baeldung.com/spring-data-elasticsearch-tutorial 你也为 RestHighLevelClient 创建了 Bean 吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-24
  • 1970-01-01
  • 2013-06-29
  • 2018-03-05
  • 1970-01-01
相关资源
最近更新 更多