searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

Elasticsearch Docker 集群部署与Java客户端连接实战

2024-06-13 02:45:25
7
0

一、前言

在大数据时代,我们对数据的处理和检索需求日益增加。Elasticsearch作为一个开源的分布式搜索和分析引擎,凭借其强大的全文搜索功能、高扩展性和实时性,在日志分析、全文检索等领域得到广泛应用。本文将详细介绍如何使用Docker部署一个Elasticsearch集群,并演示如何通过Java应用程序连接并使用该集群。

二、环境准备

  1. 确保你的机器上已安装Docker和Docker Compose。
  2. Elasticsearch官方镜像可以从Docker Hub获取。

三、Elasticsearch集群部署

  1. 创建Docker网络

    为了使容器能够互相通信,首先创建一个Docker网络。

    docker network create elasticsearch-net
    
  2. 编写docker-compose.yml文件

    在项目目录下创建docker-compose.yml文件,定义Elasticsearch节点。

    version: '3'
    services:
      es01:
        image: docker.elastic.co/elasticsearch/elasticsearch:7.14.1
        container_name: es01
        environment:
          - node.name=es01
          - cluster.name=docker-cluster
          - discovery.seed_hosts=es02,es03
          - cluster.initial_master_nodes=es01,es02,es03
          - bootstrap.memory_lock=true
          - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
        ulimits:
          memlock:
            soft: -1
            hard: -1
        volumes:
          - data01:/usr/share/elasticsearch/data
        ports:
          - 9200:9200
        networks:
          - elasticsearch-net
    
      es02:
        image: docker.elastic.co/elasticsearch/elasticsearch:7.14.1
        container_name: es02
        environment:
          - node.name=es02
          - cluster.name=docker-cluster
          - discovery.seed_hosts=es01,es03
          - cluster.initial_master_nodes=es01,es02,es03
          - bootstrap.memory_lock=true
          - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
        ulimits:
          memlock:
            soft: -1
            hard: -1
        volumes:
          - data02:/usr/share/elasticsearch/data
        networks:
          - elasticsearch-net
    
      es03:
        image: docker.elastic.co/elasticsearch/elasticsearch:7.14.1
        container_name: es03
        environment:
          - node.name=es03
          - cluster.name=docker-cluster
          - discovery.seed_hosts=es01,es02
          - cluster.initial_master_nodes=es01,es02,es03
          - bootstrap.memory_lock=true
          - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
        ulimits:
          memlock:
            soft: -1
            hard: -1
        volumes:
          - data03:/usr/share/elasticsearch/data
        networks:
          - elasticsearch-net
    
    volumes:
      data01:
      data02:
      data03:
    
    networks:
      elasticsearch-net:
    
  3. 启动集群

    使用以下命令启动Elasticsearch集群:

    docker-compose up -d
    

四、Java应用程序连接Elasticsearch集群

  1. 添加依赖

    在Java项目的pom.xml中添加Elasticsearch REST客户端依赖。

    <dependency>
      <groupId>org.elasticsearch.client</groupId>
      <artifactId>elasticsearch-rest-high-level-client</artifactId>
      <version>7.14.1</version>
    </dependency>
    
  2. 连接Elasticsearch集群

    import org.elasticsearch.client.RestClient;
    import org.elasticsearch.client.RestHighLevelClient;
    
    public class ElasticsearchClient {
      private static final String[] HOSTS = {"localhost:9200"};
      private static final RestClient restClient = RestClient.builder(
          HOSTS.stream().map(host -> new HttpHost(host.split(":")[0], Integer.parseInt(host.split(":")[1]), "http")).toArray(HttpHost[]::new))
          .build();
      private static final RestHighLevelClient client = new RestHighLevelClient(restClient);
    
      public static void main(String[] args) throws Exception {
        // 使用client进行操作
        // ...
      }
    }
    

五、总结

本文详细介绍了如何使用Docker部署Elasticsearch集群,并通过Java应用程序连接和使用该集群。通过这种方式,可以快速搭建和管理Elasticsearch集群,提高开发效率和系统性能。希望本文能帮助你在实际项目中更好地应用Elasticsearch。

0条评论
作者已关闭评论
c****0
2文章数
0粉丝数
c****0
2 文章 | 0 粉丝
c****0
2文章数
0粉丝数
c****0
2 文章 | 0 粉丝
原创

Elasticsearch Docker 集群部署与Java客户端连接实战

2024-06-13 02:45:25
7
0

一、前言

在大数据时代,我们对数据的处理和检索需求日益增加。Elasticsearch作为一个开源的分布式搜索和分析引擎,凭借其强大的全文搜索功能、高扩展性和实时性,在日志分析、全文检索等领域得到广泛应用。本文将详细介绍如何使用Docker部署一个Elasticsearch集群,并演示如何通过Java应用程序连接并使用该集群。

二、环境准备

  1. 确保你的机器上已安装Docker和Docker Compose。
  2. Elasticsearch官方镜像可以从Docker Hub获取。

三、Elasticsearch集群部署

  1. 创建Docker网络

    为了使容器能够互相通信,首先创建一个Docker网络。

    docker network create elasticsearch-net
    
  2. 编写docker-compose.yml文件

    在项目目录下创建docker-compose.yml文件,定义Elasticsearch节点。

    version: '3'
    services:
      es01:
        image: docker.elastic.co/elasticsearch/elasticsearch:7.14.1
        container_name: es01
        environment:
          - node.name=es01
          - cluster.name=docker-cluster
          - discovery.seed_hosts=es02,es03
          - cluster.initial_master_nodes=es01,es02,es03
          - bootstrap.memory_lock=true
          - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
        ulimits:
          memlock:
            soft: -1
            hard: -1
        volumes:
          - data01:/usr/share/elasticsearch/data
        ports:
          - 9200:9200
        networks:
          - elasticsearch-net
    
      es02:
        image: docker.elastic.co/elasticsearch/elasticsearch:7.14.1
        container_name: es02
        environment:
          - node.name=es02
          - cluster.name=docker-cluster
          - discovery.seed_hosts=es01,es03
          - cluster.initial_master_nodes=es01,es02,es03
          - bootstrap.memory_lock=true
          - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
        ulimits:
          memlock:
            soft: -1
            hard: -1
        volumes:
          - data02:/usr/share/elasticsearch/data
        networks:
          - elasticsearch-net
    
      es03:
        image: docker.elastic.co/elasticsearch/elasticsearch:7.14.1
        container_name: es03
        environment:
          - node.name=es03
          - cluster.name=docker-cluster
          - discovery.seed_hosts=es01,es02
          - cluster.initial_master_nodes=es01,es02,es03
          - bootstrap.memory_lock=true
          - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
        ulimits:
          memlock:
            soft: -1
            hard: -1
        volumes:
          - data03:/usr/share/elasticsearch/data
        networks:
          - elasticsearch-net
    
    volumes:
      data01:
      data02:
      data03:
    
    networks:
      elasticsearch-net:
    
  3. 启动集群

    使用以下命令启动Elasticsearch集群:

    docker-compose up -d
    

四、Java应用程序连接Elasticsearch集群

  1. 添加依赖

    在Java项目的pom.xml中添加Elasticsearch REST客户端依赖。

    <dependency>
      <groupId>org.elasticsearch.client</groupId>
      <artifactId>elasticsearch-rest-high-level-client</artifactId>
      <version>7.14.1</version>
    </dependency>
    
  2. 连接Elasticsearch集群

    import org.elasticsearch.client.RestClient;
    import org.elasticsearch.client.RestHighLevelClient;
    
    public class ElasticsearchClient {
      private static final String[] HOSTS = {"localhost:9200"};
      private static final RestClient restClient = RestClient.builder(
          HOSTS.stream().map(host -> new HttpHost(host.split(":")[0], Integer.parseInt(host.split(":")[1]), "http")).toArray(HttpHost[]::new))
          .build();
      private static final RestHighLevelClient client = new RestHighLevelClient(restClient);
    
      public static void main(String[] args) throws Exception {
        // 使用client进行操作
        // ...
      }
    }
    

五、总结

本文详细介绍了如何使用Docker部署Elasticsearch集群,并通过Java应用程序连接和使用该集群。通过这种方式,可以快速搭建和管理Elasticsearch集群,提高开发效率和系统性能。希望本文能帮助你在实际项目中更好地应用Elasticsearch。

文章来自个人专栏
Elasticsearch专题
1 文章 | 1 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0