ES系列教程01(Elasticsearch学习环境搭建)

> 本文最早发布于公众号极客军营,原文地址
【ES系列教程01(Elasticsearch学习环境搭建)】Elasticsearch是一款非常强大的开源搜索引擎,可以帮助我们快速地从海量数据中搜索到想要获取的信息。例如当你在网上商城购物时,ElasticSearch可以帮助你快速获取想要查找的商品;当你在GitHub上搜索时,ElasticSearch不仅能够帮助你找到对应的代码仓库,还能支持代码级搜索并高亮显示对应的代码片段。
ElasticSearch还是一个大数据分析平台,具有非常强的数据分析能力。相比于Hadoop的“T+1”时效性,ElasticSearch的性能更高,可以近实时的获取数据分析结果。
工欲善其事,必先利其器。
在真正学习ElasticSearch之前,让我们先来准备好学习实验环境。
安装ElasticSearch和Kibana ElasticSearch是一款天生支持分布式的搜索引擎,可以只部署一个ElasticSearch节点,也可以轻松部署由多个节点组成的集群,节点数量对应用开发是透明的。
除了安装ElasticSearch外,我们还会安装Kibana。Kibana是一个管理和操作ElasticSearch的平台,具有很多强大的功能,通过它可以方便我们对ElasticSearch进行操作。
可以在如下地址下载到最新版本的ElasticSearch和Kibana;截至2021年12月7日,ElasticSearch的最新版本是7.15.2。

https://www.elastic.co/cn/downloads/

笔者的桌面PC运行的是Ubuntu Linux操作系统,下载好的ElasticSearch和Kibana压缩包及解压后的文件夹如下图所示:
ES系列教程01(Elasticsearch学习环境搭建)
文章图片

首先进入到ElasticSearch文件夹,运行如下命令,启动ElasticSearch(如果你希望在后台以Daemon方式启动,可以增加-d参数):
./bin/elasticsearch

可以通过下面的curl命令判断ElasticSearch是否启动成功:
curl http://localhost:9200

如果收到类似下面的Response,就证明ElasticSearch已经成功安装并启动了:
{ "name" : "poype", "cluster_name" : "elasticsearch", "cluster_uuid" : "QqnV6yVtQte10Dw3IN6eEQ", "version" : { "number" : "7.15.2", "build_flavor" : "default", "build_type" : "tar", "build_hash" : "93d5a7f6192e8a1a12e154a2b81bf6fa7309da0c", "build_date" : "2021-11-04T14:04:42.515624022Z", "build_snapshot" : false, "lucene_version" : "8.9.0", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" }

下面我们来启动Kibana,同样进入到Kibana对应的目录下,执行如下命令;
./bin/kibana

待进程启动后在浏览器中输入:
http://localhost:5601

如果能看到类似下图的欢迎页面就证明Kibana启动成功。Kibana启动后会自动关联到刚刚启动好的Elasticsearch。
ES系列教程01(Elasticsearch学习环境搭建)
文章图片

在Docker中运行ElasticSearch 相比于在操作系统上直接安装ElasticSearch和Kibana,我更推荐大家利用Docker搭建学习环境。
操作系统的某些环境因素可能会导致ElasticSearch无法启动。例如,如果你本机安装的Java版本不符合ElasticSearch的要求,会导致启动失败,必须重置JAVA_HOME环境变量才能使ElasticSearch启动成功。而利用Docker可以模拟一个干净的Linux沙箱环境,可以有效避免环境因素对ElasticSearch的干扰。
此外,利用docker-compose可以一次部署多个容器,这样就可以一键部署包含多个节点的ElasticSearch集群,省去了很多繁琐的操作,使每次的部署更加方便。
笔者已经准备好了下面的docker-compose.yml文件,定义了一个由三个ElasticSearch节点组成的集群和一个Kibana节点,大家可直接使用。
version: '2.2' services: es01: image: docker.elastic.co/elasticsearch/elasticsearch:7.15.2 container_name: es01 environment: - node.name=es01 - cluster.name=es-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: - elastic es02: image: docker.elastic.co/elasticsearch/elasticsearch:7.15.2 container_name: es02 environment: - node.name=es02 - cluster.name=es-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: - elastic es03: image: docker.elastic.co/elasticsearch/elasticsearch:7.15.2 container_name: es03 environment: - node.name=es03 - cluster.name=es-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: - elastic kibana: image: docker.elastic.co/kibana/kibana:7.15.2 container_name: kibana environment: ELASTICSEARCH_HOSTS: '["http://es01:9200","http://es02:9200","http://es03:9200"]' SERVER_NAME: kibana.example.org ports: - "5601:5601" networks: - elasticvolumes: data01: driver: local data02: driver: local data03: driver: localnetworks: elastic: driver: bridge

将这段yaml配置拷贝到名字为docker-compose.yml的文件中,并在与该文件相同的路径下执行docker-compose up命令便能一键启动一个完美的ElasticSearch集群。
ES系列教程01(Elasticsearch学习环境搭建)
文章图片

下面的命令可以查看一个集群的状态信息:
curl http://localhost:9200/_cluster/health?pretty

如果收到类似下面的Response,就证明ElasticSearch集群已经启动成功了:
{ "cluster_name" : "es-docker-cluster", "status" : "green", "timed_out" : false, "number_of_nodes" : 3, "number_of_data_nodes" : 3, "active_primary_shards" : 7, "active_shards" : 14, "relocating_shards" : 0, "initializing_shards" : 0, "unassigned_shards" : 0, "delayed_unassigned_shards" : 0, "number_of_pending_tasks" : 0, "number_of_in_flight_fetch" : 0, "task_max_waiting_in_queue_millis" : 0, "active_shards_percent_as_number" : 100.0 }

通过number_of_nodes参数可以确定我们已经成功搭建了一个由3个节点组成的ElasticSearch集群。
小结 至此,我们已经拥有了一个可以用于学习和实验的ElasticSearch环境。在下一小节,我将用一个“在线书店”的例子带领大家快速浏览ElasticSearch的各个特性,让大家感受一下ElasticSearch相比于传统数据库的独特之处,并掌握如何通过Kibana操控ElasticSearch。
喜欢本文的朋友,欢迎关注公众号极客军营,收看更多精彩内容
ES系列教程01(Elasticsearch学习环境搭建)
文章图片

    推荐阅读