当前位置: 首页 > 后端技术 > Java

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

时间:2023-04-01 23:15:44 Java

>本文首发于公众号极客兵营。获得的信息。例如,当你在网上商店购物时,ElasticSearch可以帮助你快速获取你想要查找的商品;当你在GitHub上搜索时,ElasticSearch不仅可以帮你找到对应的代码仓库,还支持代码级搜索,高亮显示对应的代码片段。ElasticSearch也是一个大数据分析平台,具有非常强大的数据分析能力。与Hadoop的“T+1”时效相比,ElasticSearch具有更高的性能,能够近乎实时地获取数据分析结果。工欲善其事,必先利其器。在真正学习ElasticSearch之前,让我们先来准备一下学习实验环境。安装ElasticSearch和KibanaElasticSearch是一个天然支持分布式的搜索引擎。您可以只部署一个ElasticSearch节点,也可以轻松部署由多个节点组成的集群。节点数量对应用程序开发是透明的。除了安装ElasticSearch,我们还要安装Kibana。Kibana是一个管理和运行ElasticSearch的平台,有很多强大的功能,通过它我们可以很方便的运行ElasticSearch。您可以在以下地址下载最新版本的ElasticSearch和Kibana;截至2021年12月7日,ElasticSearch的最新版本为7.15.2。https://www.elastic.co/cn/downloads/笔者的台式电脑运行的是UbuntuLinux操作系统。下载的ElasticSearch和Kibana压缩包和解压后的文件夹如下图所示:首先进入ElasticSearch文件夹,运行如下命令启动ElasticSearch(如果想以Daemon方式在后台启动,可以添加-dparameter):./bin/elasticsearch可以使用如下curl命令判断ElasticSearch是否启动成功:curlhttp://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.212Z,42”2“build_snapshot”:false,“lucene_version”:“8.9.0”,“minimum_wire_compatibility_version":"6.8.0","minimum_index_compatibility_version":"6.0.0-beta1"},"tagline":"YouKnow,forSearch"}接下来我们启动Kibana,同样进入Kibana对应的目录,然后执行以下命令;./bin/kibana进程启动后,在浏览器中输入:http://localhost:5601如果能看到类似下图的欢迎页面,证明Kibana启动成功。Kibana启动后,会自动关联新启动的Elasticsearch。在Docker中运行ElasticSearch相比直接在操作系统上安装ElasticSearch和Kibana,我更推荐大家使用Docker搭建学习环境。操作系统的某些环境因素可能会导致ElasticSearch无法启动。比如你本机安装的Java版本不符合ElasticSearch的要求,就会启动失败。您必须重新设置JAVA_HOME环境变量才能使ElasticSearch成功启动。使用Docker可以模拟一个干净的Linux沙箱环境,可以有效避免环境因素对ElasticSearch的干扰。另外,使用docker-compose可以一次部署多个容器,这样一键就可以部署一个包含多个节点的ElasticSearch集群,省去了很多繁琐的操作,让每次部署都更加方便。笔者准备了如下docker-compose.yml文件,定义了一个由三个ElasticSearch节点和一个Kibana节点组成的集群,可以直接使用。版本:'2.2'服务:es01:图像:docker.elastic.co/elasticsearch/elasticsearch:7.15.2容器名称:es01环境:-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:-1hard:-1volumes:-data01:/usr/share/elasticsearch/数据端口:-9200:9200网络:-elastices02:image:docker.elastic.co/elasticsearch/elasticsearch:7.15.2container_name:es02环境:-node.name=es02-cluster.name=es-docker-集群-discovery.seed_hosts=es01,es03-cluster.initial_master_nodes=es01,es02,es03-bootstrap.memory_lock=true-“ES_JAVA_OPTS=-Xms512m-Xmx512m”ulimits:memlock:soft:-1hard:-1volumes:-data02:/usr/共享/elasticsearch/数据网络:-弹性es03:图像:docker.elastic.co/elasticsearch/elasticsearch:7.15.2container_name:es03环境:-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:-1hard:-1volumes:-data03:/usr/share/elasticsearch/数据网络:-elastickibana:图像:docker.elastic.co/kibana/kibana:7.15.2容器名称:kibana环境:ELASTICSEARCH_HOSTS:'["http://es01:9200","http://es02:9200","http://es03:9200"]'SERVER_NAME:kibana.example.orgports:-"5601:5601"networks:-elasticvolumes:data01:driver:localdata02:driver:localdata03:driver:localnetworks:elastic:driver:bridge将这段yaml配置贝到名字为docker-compose.yml的文件中,并与在文件同路径下执行docker-composeup命令,一键启动完美的ElasticSearch集群。下面的命令可以查看一个集群的状态信息:curlhttp://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_light_of_inch”,“task_max_waiting_in_queue_millis”:0,“active_shards_percent_as_number”:100.0我们可以通过参数number_of确认已经成功搭建了一个由3个节点组成的ElasticSearch集群。小结至此,我们就有了一个可以用来学习和实验的ElasticSearch环境。下一节,我将以“在线书店”为例,带大家了解ElasticSearch的各种特性,让大家感受ElasticSearch相对于传统数据库的独特之处,掌握如何通过Kibana控制ElasticSearch。喜欢本文的朋友,欢迎关注公众号极客军营,观看更多精彩内容