版权声明:本文为博主原创文章,遵循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. python技巧 — pip install 错误,超时

    jieba库安装失败   pip install -i https://pypi.tuna.tsinghua.edu.cn/simple jieba wordcloud库安装失败 pip instal ...

  2. AVR单片机教程——数字输出

    从上一篇教程中我们了解到,按键与开关的输入本质上就是数字信号的读取.这一篇教程要讲的是,控制LED的原理是数字信号的输出.数字IO是单片机编程之有别于桌面编程的各项内容中最简单.最基础的. 在讲数字信 ...

  3. PB 报表数值列加%

  4. matlab安装与使用

    Matlab安装和使用 百度网盘连接:https://pan.baidu.com/s/1aHPeAkNofCuwyYopnva4Mg 提取码:ci96 下载完成后: 将R2017b_win64_dvd ...

  5. Java操作Hadoop集群

    mavenhdfsMapReduce 1. 配置maven环境 2. 创建maven项目 2.1 pom.xml 依赖 2.2 单元测试 3. hdfs文件操作 3.1 文件上传和下载 3.2 RPC ...

  6. iOS加解密最重要的干货:CCCrypt

    需要引入框架#import <CommonCrypto/CommonCryptor.h> 函数定义: CCCryptorStatus CCCrypt( CCOperation op, /* ...

  7. c#读写apk的 comment

    写入: ZipFile zipFile = new ZipFile("C:\\Users\\Administrator\\Desktop\\2.apk"); zipFile.Beg ...

  8. 部署---Apache服务器安装SSL证书

    在云服务器的证书控制台下载Apache版本证书,下载到本地的是一个压缩文件. 解压后里面包含: _public.crt文件是证书文件, _chain.crt是证书链(中间证书)文件, .key文件是证 ...

  9. sqoop 导入增量数据到hive

    版本 hive:apache-hive-2.1.0 sqoop:sqoop-1.4.6 hadoop:hadoop-2.7.3 导入方式 1.append方式 2.lastmodified方式,必须要 ...

  10. VLAN实验2:配置Trunk接口

    实验环境公司规模较大200多个员工.内部网络是一个较大的局域网,有两台交换机S1和S2来负责员工网络的接入,接入交换机之间通过汇聚交换机S3相连.公司通过划分VLAN来隔离广播域,由于员工较多,同部门 ...