【Elasticsearch】【基础】入门

举报
huahua.Dr 发表于 2021/05/29 17:55:17 2021/05/29
【摘要】 一、Elasticsearch是什么Elasticsearch是基于ApacheLucene全文搜索引擎库实现的一个实时的开源分布式搜索引擎。二、Elasticsearch能做什么支持实时高效全文检索,支持实时高效结构化检索、分析支持分布式实时文档存储支持PB级的结构化或非结构化数据支持拓展,Elasticsearch可配置并且灵活。支持通过RestAPI与应用程序进行通信三、Elastic...

一、Elasticsearch是什么

  1. Elasticsearch是基于ApacheLucene全文搜索引擎库实现的一个实时的开源分布式搜索引擎。
  2. Elasticsearch是一个分布式文档存储。Elasticsearch存储已序列化为JSON文档的复杂数据结构,而不是将信息存储为列形数据行。当您在集群中拥有多个Elasticsearch节点时,存储的文档会分布在集群中,并且可以从任何节点访问。

二、Elasticsearch能做什么

  1. 支持实时高效全文检索,支持实时高效结构化检索分析
  2. 支持分布式实时文档存储
  3. 支持PB级的结构化或非结构化数据
  4. 支持拓展,Elasticsearch可配置并且灵活
  5. 支持通过RestAPI与应用程序进行通信

三、Elasticsearch怎么安装(windows环境)

  1. 需要安装最新的java版本,因为ES也是java语言编写的,需要JVM的支持
  2. 下载最新版的Elasticsearch并解压(选择适合的操作系统版本,本次选择windows)
  3. 进入解压目录,cd到bin目录,运行elasticseach.bat文件,查看运行结果是否成功。
  4. 运行elasticsearch文件成功后,浏览器访问http://localhost:9200/,响应结果如下:
    • {
        "name" : "主机名
      ",
        "cluster_name" : "elasticsearch",
        "cluster_uuid" : "yqQn9A1fTzKfR064ypqT9w",
        "version" : {
          "number" : "7.3.2",
          "build_flavor" : "default",
          "build_type" : "zip",
          "build_hash" : "1c1faf1",
          "build_date" : "2019-09-06T14:40:30.409026Z",
          "build_snapshot" : false,
          "lucene_version" : "8.1.0",
          "minimum_wire_compatibility_version" : "6.8.0",
          "minimum_index_compatibility_version" : "6.0.0-beta1"
        },
        "tagline" : "You Know, for Search"
      }
  5. 收到上面的响应之后,证明已经启动并运行一个Elasticsearch节点了。
  6. 如果想搭建一个集群启动多个节点则可以修改config目录下的elasticsearch.yaml文件,文件里面都有详细的配置说明,修改完yaml配置文件之后重启elasticsearch就会生效。
  7. exit退出即可停止elasticsearch服务

四、如何在应用程序中使用Elasticsearch

  • Elasticsearch安装后,应用程序客户端都可以通过Elasticsearch提供等RestAPI进行与ES通信交互,如通过curl向ES发送请求;不区分语言,同时官方也提供了很多不同语言的客户端库和插件。比如提供了java相关的客户端库,在写java程序的时候,只需要依赖这些库

  • 一个Elasticsearch请求curl组成:

     curl -X<verb> '<protocol>://<host>:<port>/<path>?<query_string>' -d '<body>'

    1. verb:适当的http方法:GET,POST,PUT,HEAD,DELETE
    2. protocol: http或者https
    3. host:Elasticsearch集群中任意节点的主机名,或者使用localhost表示本机
    4. port: 运行Elasticseach HTTP服务的端口号,默认是9200
    5. path:API的终端路径(例如_count路径表示返回集群中文档数量),path可能包含多个组件,例如_cluster/stats或_nodes/stats/jvm
    6. query_string:查询字符串参数
    7. body:一个json格式的请求体(如果需要的话)
  • 配合kibana可视化操作Elasticsearch,简单高效

    1. 官网下载kibana
    2. 解压到指定目录,根据需要在config目录下修改kibana.yaml配置文件,如server.port,server.host和连接eselasticsearch.hosts等参数
    3. 进入解压的bin目录下,执行启动文件,如windows的启动kibana.yaml
    4. 使用设置的host+port在浏览器上访问,如http://localhost:5601
    5. 浏览器访问/status路径可查看状态,如http://localhost:5601/status
    6. 打开路径,连接上es服务后,在kibana页面上就可以创建es的索引,就可以分析探索你的数据了
    7. 对es数据进行命令的直接操作可以使用Dev Tools控制台,通过命令行与es进行操作交互。

五、Elasticsearce基本概念

  •  索引index:每个索引是一系列文档优化的集合,相当于关系数据库中的database
  • 文档document:每个文档都是字段的集合,相当于关系数据库中表的行数据rows
  • 类型type:表示一类类似的文档,相当于关系数据中的表table
  • 字段field:每个字段都是包含key-value键值对的数据,相当于关系数据库中表的列columns
  • 映射mapping:类似于DB的schema,描述这一个类型type中的所有文档可能具有的字段或属性,以及这些字段的类型,并且描述如何索引和存储这些字段
  •  分片shards:是指将索引划分成多份,每一份就是一个分片,也叫主分片;分片分为两类:主分片和复制分片,这些分片都是一个独立的索引,可以被放置在集群中的任何节点上,方便数据拓展和平衡集群,同时可以复制分片,复制分片不会被分配在与主分片所在的节点上,复制分片主要作用于故障转移机制。
  • 节点node:一个节点就是一个ES实例,第一个启动的节点默认就是master节点,其余节点都可以是候选节点(通过node.master设置),当master节点崩了,这些候选节点就有机会选取为master节点;每个节点都保存了集群信息的状态,只有master节点才能修改集群的状态信息。

Elasticsearch是面向文档document oriented)的,它可以存储整个对象或文档(document)。然而它不仅仅是存储,还会索引(index)每个文档的内容使之可以被搜索。在Elasticsearch中,你可以对文档(而非成行成列的数据)进行索引、搜索、排序、过滤。

Elasticsearch中,文档归属于一种类型(type)而这些类型存在于索引(index)中,我们可以简单的对比传统关系型数据库

    Relational DB -> Databases -> Tables -> Rows -> Columns

    Elasticsearch -> Indices   -> Types  -> Documents -> Fields

六、使用场景

  • 在应用程序或者网站中添加搜索框的场景

  • 存储和分析日志、指标和安全事件数据的场景

  • 使用机器学习实时自动建模的行为数据的场景

  • 使用es作为存储介质自动执行业务工作流

  • 使用es作为地理信息系统(GIS)管理、集成和分析空间信息

  • 使用es作为生物信息学研究工具存储和处理遗传数据

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。