Elasticsearch--入门

什么Elasticsearch?

Elasticsearch 是一个开源分布式可扩展的近实时搜索和分析引擎,一个建立在全文搜索引擎 Apache Lucene(TM) 基础上的搜索引擎,当然 Elasticsearch 并不仅仅时 Lucene 那么简单,它不仅包括了全文搜索功能,还可以进行:

  • 分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索。
  • (Near Real Time)近实时分析的搜索式引擎。
  • 集群规模可以从单个节点扩展到数百个节点,处理PB级别的结构化或非结构化数据,高可用&水平扩展。

支持多种方式集成接入

  • 多种编程语言的类库(官网介绍)
    • Java / .NET / Python / Ruby / PHP / Groovy / Perl
  • RESTful API v.s Transport API
    • 9200 & 9300 (建议使用RESTful API)
  • JDBC & ODBC

REST API --- 很容易被各种语言调用的软件架构风格、设计风格的API

Elasticsearch的主要功能

  1. 海量数据的分布式存储以及集群管理,服务与数据的高可用,水平扩展。
  2. 近实时搜索,性能卓越,结构化,全文,地理位置,自动完成。
  3. 海量数据的近实时分析,聚合功能。

版本变化

Elasticsearch 7.x 之前:

Elasticsearch 7.x:

重大改进,正式废除了单个索引下多Type的支持!

Elastic Stack 生态圈

Elasticsearch 与数据库集成

单独与数据库集成

以下情况可考虑与数据库集成:

  • 与现有系统的集成
  • 需要考虑事务性
  • 数据更新频繁

Elasticsearch 的文件目录结构

 

Elasticsearch 中的基本概念

文档(Document)

Elasticsearch 是面向文档的,文档是所有可搜索数据的最小单位。

  • 日志文件中的日志项。
  • 一本电影的具体信息 / 一张唱片的详细信息。
  • MP3播放器里的一首歌 / 一篇PDF文档中的具体内容。

文档会被序列化成JSON格式,保存在 Elasticsearch 中。

  • JSON对象由字段组成。
  • 每个字段都有对应的字段类型(字符串 / 数值 / 布尔 / 日期 / 二进制 / 范围类型)

每个文档都有一个 Unique ID。

  • 你可以自己指定ID。
  • 或者通过 Elasticsearch 自动生成。

索引(Index)

{
    "movies" : {
        "settings" : {
            "index" : {
                "creation_date" : 1552737458543",
                "number_of_shards" : "2",
                "number_of_replicas" : "0",
                "uuid" : "sdasqweqQWEQddas",
                "version" : {
                    "created" : "6060299"
                },
                "provided_name" : "movies"
            }
        }    
    }    
}

Index —— 索引是文档的容器,是一类文档的结合。

  • Index 体现了逻辑空间的概念;每个索引都有自己的Mapping定义,用于定义包含的文档的字段名和字段类型。
  • Shard 体现了物理空间的概念;索引中的数据分散在 Shard上。

索引的 Mapping 与 Settings

  • Mapping 定义文档字段的类型。
  • Setting 定义不同的数据分布。

节点(Node)

节点是一个 Elasticsearch 的实例,本质上就是一个 JAVA 进程。一台机器上可以运行多个 Elasticsearch 进程,但是生产环境一般建议一台机器上只运行一个 Elasticsearch 实例。

每一个节点都有名字,通过配置文件配置,或者启动的时候 -E node.name=node1 指定。

每一个节点在启动之后,会分配一个 UID,保存在 data 目录下。

分片(Primary Shard & Replica Shard)

主分片,用以解决数据水平扩展的问题。通过主分片,可以将数据分布到集群内的所有节点之上。

  • 一个分片是一个运行的 Luncene 的实例。
  • 主分片数在索引创建时指定,后续不允许修改,除非 Reindex。

副本,用以解决数据高可用的问题。分片是主分片的拷贝。

  • 副本分片数,可以动态的调整。
  • 增加副本数,还可以在一定程度上提高服务的可用性(读取的吞吐)。

查看集群的健康状况

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值