我的日常

登录/注册
您现在的位置:论坛 资料库 开源社区 > 分布式搜索引擎Elasticsearch
总共48086条微博

动态微博

查看: 1689|回复: 0

分布式搜索引擎Elasticsearch

[复制链接]
admin    

1244

主题

544

听众

1万

金钱

管理员

  • TA的每日心情

    2021-2-2 11:21
  • 签到天数: 36 天

    [LV.5]常住居民I

    管理员

    跳转到指定楼层
    楼主
    发表于 2016-03-01 16:24:17 |只看该作者 |倒序浏览
    介绍

    Elasticsearch是一个基于Lucene的开源分布式搜索引擎,具有分布式多用户能力。Elasticsearch是用java开发,提供Restful接口,能够达到实时搜索、高性能计算;同时Elasticsearch的横向扩展能力非常强,不需要重启服务,基本上达到了零配置。但是目前来说相关资料很少,同时版本更新很快,bug存在,API繁多并且变化。

    概念和设计

    索引

    索引(index)是Elasticsearch存放数据的地方。如果你熟悉关系型数据库,就可以将索引理解为关系型数据库的一张表。但与关系型数据库相比,Elasticsearch可以快速、搞笑地对索引中的数据进行全文检索,并且不需要存储原始数据。如果你熟悉MongoDB,就可以将Elasticsearch的索引理解为MongoDB中的集合。如果你熟悉CouchDB,就可以将索引理解为CouchDB中的数据库。

    文档

    文档(document)是Elasticsearch中存储的主要实体。文档由字段(行数据的列)组成,Elasticsearch允许一个字段出现多次,该类字段被称为多值字段(multivalued)。每个字段对应一种类型(字符串型、数值型、日期型等)。字段类型可以是复合的,字段可以包含其他子文档或数组。字段类型在Elasticsearch中非常重要,它使得搜索引擎知道应如何执行不同的操作,如比较、排序等。幸运的是Elasticsearch可以自动确定字段类型。与关系型数据库不同,Elasticsearch的文档不需要有固定结构,不同文档可以具有不同的字段集合,而且在程序开发时不需要知道文档的字段。当然,用户也可以通过模式映射(schema mapping)定义文档结构。

    文档类型

    在Elasticsearch中,一个索引可以存储许多不同用途的对象。例如,基于Elasticsearch的博客可以存储文章和评论。文档类型可以帮助我们轻松地区分这些对象。值得注意的是,每个文档可以有不同的结构。在实际操作中,将该文档划分为不同类型对数据操作有明显的帮助。划分时需要牢记一些限制条件,其中一个限制条件就是不同的文档类型对同一字段不能设置为不同的字段类型。

    节点与集群

    Elasticsearch可以作为一个独立的搜索服务工作。然而,为了能够处理大型数据集并实现容错功能,Elasticsearch支持在多台协同工作的服务器运行。这些服务器被统称为一个集群(cluster),集群的每个服务器则被称为一个节点(node)。可以通过索引分片(分割成更小的个体)将海量数据进行分割并分布到不同节点。通过副本(索引部分的拷贝)可以实现更强的可用性和更高的性能。

    分片

    当需要存储大规模文档时,由于RAM空间、硬盘容量等的限制,仅使用一个节点是不够的。另一个问题是一个节点的计算能力达不到所期望的复杂功能的要求。在这些情况下,可以将数据切分,每部分是一个单独的ApacheLucene索引,称为分片(shard)。每个分片可以被存储在集群的不同节点上。当需要查询一个由多个分片构成的索引时,Elasticsearch将该查询发送到每个相关的分片,并将结果合并。这些过程对具体应用而言是透明的,无须知道分片的存在。

    副本

    为了提高查询的吞吐量或实现高可用性,可以启用分片副本功能。副本分片是对原始分片的一个精确拷贝,原始分片被称为主分片。对索引的所有修改操作都直接作用在主分片上,每个主分片可以有零个或者多个副本分片。当主分片丢失时(如存储数据的服务器不可用时),集群可以将一个副本分片提升为新的主分片。


    科帮网 1、本主题所有言论和图片纯属会员个人意见,与本社区立场无关
    2、本站所有主题由该帖子作者发表,该帖子作者与科帮网享有帖子相关版权
    3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和科帮网的同意
    4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
    5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
    6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
    7、科帮网管理员和版主有权不事先通知发贴者而删除本文


    JAVA爱好者①群:JAVA爱好者① JAVA爱好者②群:JAVA爱好者② JAVA爱好者③ : JAVA爱好者③

    快速回复
    您需要登录后才可以回帖 登录 | 立即注册

       

    关闭

    站长推荐上一条 /1 下一条

    发布主题 快速回复 返回列表 联系我们 官方QQ群 科帮网手机客户端
    快速回复 返回顶部 返回列表