ES系列一、Elasticsearch 概述

摘要:
Elasticsearch是用Java开发的,根据Apache许可条款作为开源发布。它是目前流行的企业搜索引擎。Lucene专注于构建搜索的底层,而ElasticSearch专注于企业应用程序。实时构建索引时,Solr会生成io阻塞,查询性能很差。弹性搜索具有明显的优势。Solr支持更多的数据格式,如JSON、XML和CSV,而Elasticsearch只支持JSON文件格式。Solr是传统搜索应用程序的强大解决方案,但弹性搜索更适合新兴的实时搜索应用程序。

一、ES 产生背景

  对于一般的公司,初期是没有那么多数据的,所以很多公司更倾向于使用传统的数据库:mysql;比如我们要查找关键字“呀呀呀”,那么查询的方式大概就是:select * from table where field like ‘%呀呀呀%’; 但是随着业务发展,数据会不断的膨胀,那么问题就来了;mysql单表查询能力即便经过了优化,它的极限也就是400W左右的数据量。而且还会经常出现查询超时的现象;

然后很多公司开始对数据库进行横向和纵向的扩容,开始进行数据库表的“拆分”:横向拆分和纵向拆分;但是即便这样操作,仍然会出现很多问题,比如:

  1、数据库会出现单点故障问题,于是先天主从复制关系,于是增加了运维成本.
  2、因为对表的拆分,增加了后期维护的难度,同样也是增加了运维成本.
  3、即便做了大量的维护,但对于大数据的检索操作,依然很慢,完全达不到期望值.

ES系列一、Elasticsearch 概述第1张

所以为了满足需求: 海量数据组合条件查询 、毫秒级或者秒级返回数据,ElasticSearch应运而生。

 

二、Lucene 定义

  lucene是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎。官网地址: http://lucene.apache.org/

  Lucene实现全文检索的流程:
                索引流程:采集数据--->构建文档对象--->创建索引(将文档写入索引库)。
                搜索流程:创建查询--->执行搜索--->渲染搜索结果。
ES系列一、Elasticsearch 概述第2张

  

三、ES 定义 

  ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。官网地址:https://www.elastic.co/
  

四、ES vs Lucene

   成品与半成品的关系。Lucene专注于搜索底层的建设,而ElasticSearch专注于企业应用。
   比如:Lucene相当于汽车引擎,而ES相当于汽车。
  ES系列一、Elasticsearch 概述第3张

五、Solr 定义

  Solr是Apache 下的一个开源项目,使用Java基于Lucene开发的全文检索服务是一个独立的企业级搜索应用服务器,它对外提供类似于Webservice的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。官网地址: https://lucene.apache.org/solr/

六、ES vs Solr 优缺点

  ES系列一、Elasticsearch 概述第4张

七、ES vs Solr 

    检索速度:当单纯的对已有数据进行搜索时,Solr更快。

  ES系列一、Elasticsearch 概述第5张

    当实时建立索引时, Solr会产生io阻塞,查询性能较差, Elasticsearch具有明显的优势。
ES系列一、Elasticsearch 概述第6张
    随着数据量的增加,Solr的搜索效率会变得更低,而Elasticsearch却没有明显的变化。
ES系列一、Elasticsearch 概述第7张
    大型互联网公司,实际生产环境测试,将搜索引擎从Solr转到Elasticsearch以后的平均查询速度有了50倍的提升。
ES系列一、Elasticsearch 概述第8张
  总结:
    二者安装都很简单。
    Solr 利用 Zookeeper 进行分布式管理,而Elasticsearch 自身带有分布式协调管理功能。
    Solr 支持更多格式的数据,比如JSON、XML、CSV,而 Elasticsearch 仅支持json文件格式。
    Solr 官方提供的功能更多,而 Elasticsearch 本身更注重于核心功能,高级功能多有第三方插件提供
    Solr 在传统的搜索应用中表现好于 Elasticsearch,但在处理实时搜索应用时效率明显低于 Elasticsearch。
    Solr 是传统搜索应用的有力解决方案,但 Elasticsearch更适用于新兴的实时搜索应用。
 

八、ES vs 关系型数据库

ES系列一、Elasticsearch 概述第9张

  索引(Index)

     ES将数据存储于一个或多个索引中,索引是具有类似特性的文档的集合。类比传统的关系型数据库领域来说,索引相当于SQL中的一个数据库,或者一个数据存储方案(schema)。索引由其名称(必须为全小写字符)进行标识,并通过引用此名称完成文档的创建、搜索、更新及删除操作。一个ES集群中可以按需创建任意数目的索引。

  类型(Type)

     类型是索引内部的逻辑分区(category/partition),然而其意义完全取决于用户需求。因此,一个索引内部可定义一个或多个类型(type)。一般来说,类型就是为那些拥有相同的域的文档做的预定义。例如,在索引中,可以定义一个用于存储用户数据的类型,一个存储日志数据的类型,以及一个存储评论数据的类型。类比传统的关系型数据库领域来说,类型相当于“表”。

  文档(Document)

     文档是Lucene索引和搜索的原子单位,它是包含了一个或多个域的容器,基于JSON格式进行表示。文档由一个或多个域组成,每个域拥有一个名字及一个或多个值,有多个值的域通常称为“多值域”。每个文档可以存储不同的域集,但同一类型下的文档至应该有某种程度上的相似之处。

免责声明:文章转载自《ES系列一、Elasticsearch 概述》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Spring嵌套事务vue中如何实现pdf文件预览?下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

ELK批量删除索引

一、存在问题 用了一段时间elk发现如果索引长时间不删除,elk会越来越慢,重启elasticsearch服务器节点之前同步时间也会很长 二、解决方法(定期删除索引) 1.在elasticsearch节点上使用curl -XGET 'http://192.168.X.XX:9200/_cat/shards'查看索引 [root@192-168-x-x sc...

ELK之从6.3.1升级至6.6.2

  需要把原6.3.1版本升级为6.6.2版本   1,官网下载rpm包   2,升级elasticsearch和kibana rpm -U elasticsearch-6.6.2.rpm rpm -U kibana-6.6.2-x86_64.rpm rpm -U logstash-6.6.2.rpm      配置还是使用原配置,新版本配置会在配...

Solr学习02:搭建Solr环境

一、安装虚拟机   Solr 必须运行在Java1.6 或更高版本的Java 虚拟机中,运行标准Solr 服务只需要安装JRE 即可,但如果需要扩展功能或编译源码则需要下载JDK 来完成。可以通过下面的地址下载所需JDK 或JRE :   OpenJDK ( http://java.sun.com/j2se/downloads.html )  Sun (h...

SnpHub搭建(二) | 数据预处理与样本描述文件准备

SnpHub提供了一个自动化的数据预处理脚本,在填写了配置文件后运行脚本即可(细节在这里https://esctrionsit.github.io/snphub_tutorial/content/Setup/quick_deploy.html)。 但是,对于某些情况,手动预处理数据仍有优势。因此,本文将介绍SnpHub所需数据的手动预处理步骤。同时,还将介...

解决elasticsearch报错报错“java.lang.IllegalArgumentException: Rejecting mapping update to [这里是索引名称保密] as the final mapping would have more than 1 type: [_doc, log]"”

某日在研究kibana的索引生命周期功能,感觉对于我们现在几千个索引蛮有用途,之前都是写个删除脚本呢,放到定时任务进行删除。 通过新建一个生命后期策略,设置日期15日,并通过索引模板匹配到测试索引的时候,第二天发现该索引无任何数据,显示索引大小283B,文档数0,似乎是不接受数据了 通过查看elasticsearch的logs_server.json日志,...

Elasticsearch入门和基本使用

1. 什么是Elasticsearch? Elasticsearch,分布式,高性能,高可用,可伸缩的搜索和分析系统;Elastic 是 Lucene 的封装,提供了 REST API 的操作接口,开箱即用。用于快速存储,搜索和海量数据分析; 2. Elasticsearch的优点 1)横向可扩展性:只需要增加一台机器,添加一些配置即可; 2)分片机制提供...