版权声明:本文为博主原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接和本声明。

接触ElasticSearch一段时间了,前期调研、项目接入、数据同步、列表查询这些阶段都已经经历了,但是ES在脑海中的整体映像还是模模糊糊,做个梳理,认真地思考一下ElasticSearch中模糊的思维。

前提:

如图,是从github上学习到了,宏观总结阶段的流程化思考,很科学的学习习惯,我按照这个思路来总结下目前阶段我理解到的ElasticSearch.

它是什么

1.术语定义

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

2.它的历史
      出现原因:https://www.jianshu.com/p/3d43616999d9 (一个做菜谱的故事)
      历史版本:https://www.elastic.co/guide/en/elasticsearch/reference/current/setup-upgrade.html(每个版本节点,做了哪些事情,有助于排解使用中的问题)
        
3.构架

如图所示,是ES的整体架构,从下往上说:
      1.Gateway是es用于存储索引的文件系统,支持多种文件类型,如图所示。
      2.Gateway往上就是分布式的Lucene框架,ES底层的API是由这一层提供的,每个节点都有一个Lucene引擎的支持。
      3.Lucene往上是Elasticsearch的模块,包括索引模块、搜索模块、映射解析模块等。River相当于第三方插件,用来导入第三方数据源,在2.x之后不再使用。
      4.ES模块之上是Discovery、Scripting和第三方插件。Discovery是ES的节点发现模块,不同机器上的ES节点要组成集群需要消息通信,集群内部选主master都是通过Discovery来做。Scripting用来支持JavaScript、Python等多语言,可以在查询语句中嵌入。
      5.再往上是传输模块和JMX。传输模块支持Thrift、Memcached、HTTP,默认HTTP传输。JMX是java的管理框架。
      6.再往上是ES提供给用户的接口,通过RESTful API和ES集群进行交互。

4.核心概念
      1.集群
      代表一个集群,集群中有多个节点,其中有一个为主节点,这个主节点是可以通过选举产生的,主从节点是对于集群内部来说的。es的一个概念就是去中心化,字面上理解就是无中心节点,这是对于集群外部来说的,因为从外部来看es集群,在逻辑上是个整体,你与任何一个节点的通信和与整个es集群通信是等价的。

2.节点
      一个节点是集群中的一个服务器,对于节点,最好采用被动加入的方式,不然容易产生“脑裂”现象。

3.索引4.类型 5.文档

这三个概念,参考与关系型DB的对比:

6.分片
      es可以把一个完整的索引分成多个分片,这样的好处是可以把一个大的索引拆分成多个,分布到不同的节点上。构成分布式搜索。分片的数量只能在索引创建前指定,并且索引创建后不能更改。

7.副本
      es可以设置多个索引的副本,副本的作用一是提高系统的容错性,当某个节点某个分片损坏或丢失时可以从副本中恢复。二是提高es的查询效率,es会自动对搜索请求进行负载均衡。

4.应用场景
     1.站内搜索
     用在网页信息量很大的网站,百度、github、stackoverflow,全文检索的功能,方便用户快速检索数据信息。
     2.NoSQL数据库
     Elasticsearch读写性能优于MongoDB,支持地理位置查询。
     3.日志分析
     日志分析由实时日志分析平台ELK(Elasticsearch、Logstash、Kiabana)完成,能够对日志进行集中的收集、存储、搜索、分析、监控以及可视化。

5.同类常见技术
      Solr(全文搜索)对比es: https://blog.csdn.net/vv8086/article/details/74452178 
      Splunk(全文搜索、大数据搜索) 对比es:https://blog.csdn.net/github_39335046/article/details/73835390

从趋势上可见,近几年ES的排名也是越来靠前。

学习前提、依赖
       RESTful API的使用
       JSON数据结构的了解。

为什么会出现
     1.分布式
     2.全文检索
     3.近实时搜索和分析
     4.高可用
     5.模式自有
     6.RESTful API
     从这几个角度看,这似乎是es的优点,随着现在互联网项目的数据量越来越大,这恰恰是为什么es能越来越火的原因啊。

缺陷
      换了好几个负面的关键词去搜索,抛开技术实现,从选型的角度,相比较solr,没有什么缺陷。像“深度分页”这种的,完全可以在使用的时候避免,官网给了很好的解决方案:Scroll以及from/size等方法。

归纳整理并分享
      1.官网的Getting Started绝对是最快、最好的学习方式;
      2.安装时候,通过HEAD插件,或者googl浏览器的sense插件,自己敲一敲,多动手;

elasticsearch辅助:
      1.head插件
      2.Kiabana

脑图总结

1.概述;2.应用;3.原理;4.QA

 

ElasticSearch 初识ES的更多相关文章

  1. 初识es

    初识es es是什么? es是基于Apache Lucene的开源分布式(全文)搜索引擎,,提供简单的RESTful API来隐藏Lucene的复杂性. es除了全文搜索引擎之外,还可以这样描述它: ...

  2. [数据库]漫谈ElasticSearch关于ES性能调优几件必须知道的事(转)

    ElasticSearch是现在技术前沿的大数据引擎,常见的组合有ES+Logstash+Kibana作为一套成熟的日志系统,其中Logstash是ETL工具,Kibana是数据分析展示平台.ES让人 ...

  3. C# 如何使用 Elasticsearch (ES)

    Elasticsearch简介 Elasticsearch (ES)是一个基于Apache Lucene(TM)的开源搜索引擎,无论在开源还是专有领域,Lucene可以被认为是迄今为止最先进.性能最好 ...

  4. elasticsearch(ES)日志迁移

    =============================================== 2018/7/29_第1次修改                       ccb_warlock == ...

  5. 漫谈ElasticSearch关于ES性能调优几件必须知道的事

    lasticSearch是现在技术前沿的大数据引擎,常见的组合有ES+Logstash+Kibana作为一套成熟的日志系统,其中Logstash是ETL工具,Kibana是数据分析展示平台.ES让人惊 ...

  6. elastic search book [ ElasticSearch book es book]

    谁在使用ELK 维基百科, github都使用 ELK (ElasticSearch es book) ElasticSearch入门 Elasticsearch入门,这一篇就够了==>http ...

  7. 01-springboot整合elasticsearch初识

    1.elasticsearch 1.es简介      Elasticsearch 是一个分布式.高扩展.高实时的搜索与数据分析引擎.它能很方便的使大量数据具有搜索.分析和探索的能力.充分利用Elas ...

  8. 简单操作elasticsearch(es版本7.6)

    简单操作elasticsearch(es版本7.6) es 官方文档 https://www.elastic.co/guide/index.html 简单操作elasticsearch主要是指管理索引 ...

  9. 手把手教你Spring Boot2.x整合Elasticsearch(ES)

    文末会附上完整的代码包供大家下载参考,码字不易,如果对你有帮助请给个点赞和关注,谢谢! 如果只是想看java对于Elasticsearch的操作可以直接看第四大点 一.docker部署Elastics ...

随机推荐

  1. Linux环境下错误码及意义总结

    Linux的错误码包含在/usr/include/asm-generic/errno-base.h和/usr/include/asm-generic/errno.h 这两个文件内: #ifndef _ ...

  2. 性能监控工具的配置及使用 - Spotlight On Oracle(oracle) 转:紫漪

    一.    Spotlight On Oracle(oracle) 1.1.   工具简介 Spotlight是一个强有力的Oracle数据库实时性能诊断工具,提供了一个直观的.可视化的数据库活动展现 ...

  3. idea 中激活 JRebel

    JRebel介绍: JRebel是一款JVM插件,它使得Java代码修改后不用重启系统,立即生效.IDEA上原生是不支持热部署的,一般更新了 Java 文件后要手动重启 Tomcat 服务器,修改才能 ...

  4. java8之lambda表达式(默认方法)

    [推荐]2019 Java 开发者跳槽指南.pdf(吐血整理)>>> 许多开发语言都将函数表达式集成到了其集合库中.这样比循环方式所需的代码更少,并且更加容易理解.以下面的循环为例: ...

  5. C# ——Parallel类

    一.Parallel类 Parallel类提供了数据和任务的并行性: 二.Paraller.For() Paraller.For()方法类似于C#的for循环语句,也是多次执行一个任务.使用Paral ...

  6. 分享-SpringCloud微服务架构图

    1: 为大家分享一张SpringCloud微服务通用架构图 ​标题 此图仅供参考: 需要原图的同学请移步 >>>>>>>>> 这里 如有不合理的地 ...

  7. css列表滑动防止被底部遮住和适配屏幕长一点的机型处理

    1.移动端处理列表滑动的时候,微信底下有自带的返回页面按钮,经常会被遮住,遇到屏幕长一点的,下面会短一大截,以下用此方法可以解决..container{ position:relative; back ...

  8. Windows10 安装VirtualBox出现2502、2503错误解决方法

    先来到VirtualBox的下载位置,如图,笔者位置在D:/vb文件夹下   下载目录 然后按住win+R(win就是左下角ctrl和alt之间那个键),输入cmd,然后回车 如果在C盘的话,就直接c ...

  9. 【Python】单例模式

    单例 class MusicPlayer(object): instance = None def __new__(cls, *args, **kwargs): if cls.instance is ...

  10. ORACLE 清理SYSAUX表空间

    在数据库检查中发现SYSAUX表空间占用过大,SYSAUX是ORACLE10G开始提供的功能,用于数据库为SYSTEM表空间减负. 用以下语句查出相应的表空间值 select a.tablespace ...