无法连接到docker

时间:2017-10-17 15:01:14

标签: docker elasticsearch apache-flink

我在本地计算机上通过docker运行elasticsearch,并且可以通过端口9200上的REST API正常访问它。

Apache flink用于通过端口9300与elasticsearch进行通信。

我的目标是将来自apache flink的数据放到sink上的elasticsearch中,但是在每次执行程序时我都会遇到java错误:

Elasticsearch client is not connected to any Elasticsearch nodes!

我运行容器的docker命令如下所示:

docker run --rm -d -p 9200:9200 -p 9300:9300 -p 5601:5601 --name es-kibana nshou/elasticsearch-kibana

我还尝试在“-p 0.0.0.0:9300:9300”上打开端口9300,或者使用官方的docker容器进行弹性搜索。

是否有人遇到此问题并有任何解决方案?我想要尝试的另一件事是在我的机器上本地安装elasticsearch,但我认为docker方式更有价值。

这也是我的flink代码以及在elasticsearch中创建索引和映射:

List<InetSocketAddress> transports = new ArrayList<>();
    transports.add(new InetSocketAddress(InetAddress.getByName("0.0.0.0"), 9300));

    tweets.addSink(new ElasticsearchSink<Tuple2<String, Integer>>(
            config,
            transports,
            new ESSink()));

用于索引ES的卷曲:

curl --request PUT --url http://localhost:9200/twitter-bd

用于映射ES的卷曲:

curl --request PUT 
--url http://localhost:9200/twitter-bd/_mapping/twitter-wordcount \
--header 'content-type: application/json' \
--data '{
    "twitter-wordcount": {
        "properties": {
            "word": {"type": "string"},
            "cnt": {"type": "integer"}
        }
     }
}'

1 个答案:

答案 0 :(得分:1)

创建一个docker-compose文件 的搬运工-compose.yml

version: '2'
services:
    elasticsearch:
        container_name: elasticsearch
        image: elasticsearch:2.4.1
        # UNCOMMENT BELOW LINES TO HAVE PERSISTAN STORAGE
        # volumes:
        #     - /var/db/elasticsearch/:/usr/share/elasticsearch/data/
        ports:
            - 9200:9200
            - 9300:9300

生成

  

docker-compose up -d

使用9300端口与ES通信

创建内容

  

curl -XPUT&#34; http://localhost:9200/playground/equipment/1&#34; -d&#39; {&#34;输入&#34;:&#34;幻灯片&#34;,&#34;数量&#34;:2}&#39;

阅读内容

  

curl -XGET&#34; http://localhost:9200/playground/equipment/1&#34;

How To Interact with Data in ElasticSearch Using CRUD Operations