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

> 本文最早公布于公众号极客军营,原文地址

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压缩包及解压后的文件夹如下图所示:

首先进入到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。

在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:
      - elastic

volumes:
  data01:
    driver: local
  data02:
    driver: local
  data03:
    driver: local

networks:
  elastic:
    driver: bridge

将这段yaml配置拷贝到名字为docker-compose.yml的文件中,并在与该文件雷同的门路下执行docker-compose up命令便能一键启动一个完满的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。

喜爱本文的敌人,欢送关注公众号极客军营,收看更多精彩内容

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理