【ES】ElasticSearch入门

来源:互联网 发布:博雅软件股份有限公司 编辑:程序博客网 时间:2024/06/05 12:50

前言

        图书馆项目中用到了全文搜索功能,对检索质量要求比较高,于是转向寻找一款合适的检索工具,最终选定了ES(ElasticSearch)。

一、什么是ElasticSearch ?

        ElasticSearch 是一个基于Lucene 的搜索服务器,它提供了一个开源的高扩展的分布式多用户的全文搜索引擎,基于RESTful web接口,是当前流行的企业级搜索引擎,可以近乎实时的存储、检索数据。

二、为什么选择ElasticSearch ?

1、项目需要提升检索质量,ElasticSearch 在大多数应用的性能方面优于solr ;
对比过程可以查阅:
ElasticSearch与Solr搜索引擎特性对比-new
2、上手非常简单,学习成本小
3、社区活跃,资料比较多,更新频繁
4、用户众多,可以利用高扩展特性根据自身需求进行灵活的配置。
使用的优秀案例:

  • 2013年初,GitHub抛弃了Solr,采取ElasticSearch 来做PB级的搜索。 “GitHub使用ElasticSearch搜索20TB的数据,包括13亿文件和1300亿行代码”
  • 维基百科:启动以elasticsearch为基础的核心搜索架构。
  • SoundCloud:“SoundCloud使用ElasticSearch为1.8亿用户提供即时而精准的音乐搜索服务”。
  • 百度:百度目前广泛使用ElasticSearch作为文本数据分析,采集百度所有服务器上的各类指标数据及用户自定义数据,通过对各种数据进行多维分析展示,辅助定位分析实例异常或业务层面异常。目前覆盖百度内部20多个业务线(包括casio、云分析、网盟、预测、文库、直达号、钱包、风控等),单集群最大100台机器,200个ES节点,每天导入30TB+数据。

三、如何使用ElasticSearch?

  • Lucene(构建搜索引擎的核心类库)关键概念
    1)Document :用来索引和搜索的主要数据源,包含一个或者多个Field,而这些Field则包含我们跟Luence交互的数据。
    2)Field:Document 的一个组成部分,有两个部分组成,name和value。
    3)Term:不可分割的单词,搜索最小单元。
    4)Token:一个Term呈现方式,包含这个Term的内容,在文档中的起始位置和类型。
  • ElasticSearch 核心概念(数据层面)
    和关系型数据库mysql的对比
    这里写图片描述

说明
        1)关系型数据库中的数据库(database),等价于ES中的索引(Index)
一个数据库下面有N张表(table),等价于1个索引Index下面有N多类型(Type)

        2) 一个数据库表(Table)下的数据由多行(Row)多列(Column,属性)组成,等价于1个Type由多个文档(Document)和多个(Field)组成。

        3) 在一个关系型数据库里面,schema定义了表、每个表的字段,还有表和字段之间的关系。与之对应的,在ES中:Mapping定义索引下的Type的字段处理规则,即索引如何建立、索引类型、是否保存原始索引JSON文档、是否压缩原始JSON文档、是否需要分词处理、如何进行分词处理等。

        4)在数据库中的增insert、删delete、改update、查search操作对应着ES中的增Put/Post、删Delete、改Update、查Get。

  • ElasticSearch 核心概念(服务器层面)

    1) Cluster:集群
        ES可以作为一个独立的单个搜索服务器。不过,为了处理大型数据集,实现容错和高可用性,ES可以运行在许多互相合作的服务器上。这些服务器的集合称为集群。
    2) Node:节点
        形成集群的每个服务器称为节点。
    3)Shard :分片
         当有大量的文档时,由于内存的限制、磁盘处理能力不足、无法足够快的相应客户端的请求等,一个节点可能不够。这种情况下,数据可以分为较小的分片,每个分片放到不同的服务器上。
        当你查询的索引分布在多个分片上时,ES会把查询发送给每个相关的分片,并将结果组合在一起,而应用程序并不知道分片的存在。即:这个过程对于用户来说是透明的。
    4) Replia : 副本
        为提高查询吞吐量或者实现高可用性,可以使用分片副本。
         副本是一个分片的精确复制,每个分片可以有零个或者多个副本。ES中有许多相同的分片,其中之一被选择更改索引操作,这种特殊的分片成为主分片。
        当主分片丢失时,如:该分片所在的数据不可用时,集群将副本提升为新的主分片。
    5) 全文检索
         全文检索及时对一篇文章进行索引,可以根据关键字搜索,类似于mysql里的like语句。
        全文索引就是把内容根据词的意义进行分词,然后分别创建索引,例如“你们的激情是因为什么事情来的” 可能会被分词成:“你们”,“激情”,“什么事情”,“来”等token ,这样当你搜索“你们”或者“激情”都会把这句搜出来。

四、ElasticSearch的使用场景

1、实时检索并且自动提供一些搜索建议2、收集日志或或者分析统计数据(ELK)3、使用ElasticSearch聚合功能,依靠数据执行复杂的商业智能查询。

总结

   本次ElasticSearch的学习就到这里,下一篇将介绍如何在项目中使用ElasticSearch,大家敬请期待!
原创粉丝点击