官方定义

  • Elasticsearch 是一个实时的分布式搜索分析引擎, 它能让你以一个之前从未有过的速度和规模,去探索你的数据。 它被用作全文检索、结构化搜索、分析以及这三个功能的组合。
  • Elasticsearch 也是使用 Java 编写的,它的内部使用 Lucene 做索引与搜索,但是它的目的是使全文检索变得简单, 通过隐藏 Lucene 的复杂性,取而代之的提供一套简单一致的 RESTful API。它可以被这样准备地形容:
  • 一个分布式的实时文档存储,每个字段 可以被索引与搜索
  • 一个分布式实时分析搜索引擎
  • 能胜任上百个服务节点的扩展,并支持 PB 级别的结构化或者非结构化数据
  • 使用案例

  • Wikipedia 使用 Elasticsearch 提供带有高亮片段的全文搜索,还有 search-as-you-type 和 did-you-mean 的建议。
  • 卫报 使用 Elasticsearch 将网络社交数据结合到访客日志中,实时的给它的编辑们提供公众对于新文章的反馈。
  • Stack Overflow 将地理位置查询融入全文检索中去,并且使用 more-like-this 接口去查找相关的问题与答案。
  • GitHub 使用 Elasticsearch 对1300亿行代码进行查询。
  • 整体架构

    如下图:

    从以下架构图大概可以了解以下几点:

  • Elasticsearch底层是基于Lucene的。
  • 与用户交互是通过RESTful API来实现的。
  • 基本概念

    如下图:

    1,Cluster(集群)与Node(节点)

    Cluster(集群):

    在一个分布式系统里面,可以通过多个elasticsearch运行实例组成一个集群,这个集群里面有一个节点叫做主节点(master),elasticsearch是去中心化的,所以这里的主节点是动态选举出来的,不存在单点故障。

    在同一个子网内,只需要在每个节点上设置相同的集群名,elasticsearch就会自动的把这些集群名相同的节点组成一个集群。节点和节点之间通讯以及节点之间的数据分配和平衡全部由elasticsearch自动管理。

    在外部看来elasticsearch就是一个整体。

    Node(节点):

    每一个运行实例称为一个节点,每一个运行实例既可以在同一机器上,也可以在不同的机器上。所谓运行实例,就是一个服务器进程,在测试环境中可以在一台服务器上运行多个服务器进程,在生产环境中建议每台服

    器运行一个服务器进程。

    2,Index(索引)

    类似于sql server中的数据库(database)。

    3,Type(类型)

    类似于sql server中的数据表(table),es可以在一个Index中建立多个Type,其中每个Type中的数据结构可以是不同的,然后通过mapping进行映射。

    4,Document(文档)

    类似于sql server中的行(row),es中存储的数据是文档型的, 一条数据对应一个文档即相当于sql server中的一行,一个document可以有多个字段。

    5,Field(字段)

    类似于sql server数据表中的列(column)。

    6,Mapping(映射)

    类似于sql server中的schema。

    7,Query DSL

    类似于sql server中的sql语句,只不过在es中使用JSON格式的查询语句,专业术语就叫:Query DSL

    8,PUT/POST/DELETE/GET

    RESTful API,分别对应新增,修改,删除和查询。

    Elasticsearch系列(1):认识Elasticsearch的更多相关文章

    1. elasticsearch系列一:elasticsearch(ES简介、安装&配置、集成Ikanalyzer)

      一.ES简介 1. ES是什么? Elasticsearch 是一个开源的搜索引擎,建立在全文搜索引擎库 Apache Lucene 基础之上 用 Java 编写的,它的内部使用 Lucene 做索引 ...

    2. Elasticsearch使用系列-.NET6对接Elasticsearch

      Elasticsearch使用系列-ES简介和环境搭建 Elasticsearch使用系列-ES增删查改基本操作+ik分词 Elasticsearch使用系列-基本查询和聚合查询+sql插件 Elas ...

    3. Elasticsearch使用系列-Docker搭建Elasticsearch集群

      Elasticsearch使用系列-ES简介和环境搭建 Elasticsearch使用系列-ES增删查改基本操作+ik分词 Elasticsearch使用系列-基本查询和聚合查询+sql插件 Elas ...

    4. elasticsearch系列七:ES Java客户端-Elasticsearch Java client(ES Client 简介、Java REST Client、Java Client、Spring Data Elasticsearch)

      一.ES Client 简介 1. ES是一个服务,采用C/S结构 2. 回顾 ES的架构 3. ES支持的客户端连接方式 3.1 REST API ,端口 9200 这种连接方式对应于架构图中的RE ...

    5. ElasticSearch 系列随笔

      1.ElasticSearch 常用设置 2.ElasticSearch 从2.2升级到6.2.4碰到的问题 3.ElasticSearch 因为磁盘空间不够引起的数据插入错误.(message [C ...

    6. 搜索引擎ElasticSearch系列(一): ElasticSearch2.4.4环境搭建

      一:ElasticSearch简介 Elasticsearch is a distributed, RESTful search and analytics engine capable of sol ...

    7. Elasticsearch系列---初识Elasticsearch

      Elasticsearch是什么? Elasticsearch简称ES,是一个基于Lucene构建的开源.分布式.Restful接口的全文搜索引擎,还是一个分布式文档数据库.天生就是分布式.高可用.可 ...

    8. Elasticsearch系列(一)--入门

      Elasticsearch基于Lucene构建的开源搜索引擎,Java编写,提供restful API,支持横向拓展,能够完成海量数据处理. 应用场景: 1.海量数据分析引擎 2.站内搜索引擎 3.数 ...

    9. 搞定 ElasticSearch系列一 下载安装

      一.安装jdk 二.安装ElasticSearch 1.ElasticSearch下载地址: 2: 配置ElasticSearch 3:启动ElasticSearch 4: 安装ElasticSear ...

    10. 1.ElasticSearch系列之集群部署

      第一步:安装JDK JDK要求jdk1.8+,不安装也可以,ES自带JDK 第二步:系统配置 2.1 禁用交换区 sudo swapoff -a 2.2 开最大文件数的限制 编辑文件 /etc/sec ...

    随机推荐

    1. OpenFlow学习笔记

      Software-Defined Networking Network intelligence is (logically) centralized in software-based SDN co ...

    2. Node.js的安装以及npm的基础使用

      索引: Node.js的安装以及Node.js的模块管理Node.js开发环境搭建以及对ES6的支持Node.js构建Vue.js项目Vue.js单文件组件的开发基于Vue.js的UI组件(Eleme ...

    3. 【高速接口-RapidIO】5、Xilinx RapidIO核例子工程源码分析

      提示:本文的所有图片如果不清晰,请在浏览器的新建标签中打开或保存到本地打开 一.软件平台与硬件平台 软件平台: 操作系统:Windows 8.1 64-bit 开发套件:Vivado2015.4.2 ...

    4. 【BZOJ4883】 [Lydsy1705月赛]棋盘上的守卫(最小生成树,基环树)

      传送门 BZOJ Solution 考虑一下如果把行,列当成点,那么显然这个东西就是一个基环树对吧. 直接按照\(Kruscal\)那样子搞就好了. 代码实现 代码戳这里

    5. JavaScript中常见的10个BUG及其修复方法

      如今网站几乎100%使用JavaScript.JavaScript看上去是一门十分简单的语言,然而事实并不如此.它有很多容易被弄错的细节,一不注意就导致BUG. 1. 错误的对this进行引用 在闭包 ...

    6. Android 展示控件之Surface、SurfaceView、SurfaceHolder及SurfaceHolder.Callback之间的关系

      一.Surface Surface在SDK的文档中的描述是这样的:Handle onto a raw buffer that is being managed by the screen compos ...

    7. knn算法的c语言实现

      最近研究KNN,找到了一些优秀的源码,贴出来,做个笔记吧. #include<stdio.h> #include<stdlib.h> #include<math.h> ...

    8. .Net Core新建解决方案,添加项目引用,使用VSCode调试

      并不是我自己琢磨的,是看了别人学习的,因为写的都不完整,所以就整理一下记录后面忘了回看. 反正.Net Core是跨平台的,就不说在什么系统上了.假设我要建一个名为Doggie的解决方案,里面包含了一 ...

    9. 知识扩展——Git和GitHub的区别

      一直以为Git和GitHub是一个东西,直到我看到这个解释.... 转载自:git与github区别与简介 一开始接触git或是github的程序员可能搞不太清楚这些名词到底指代的是什么,所以在这里稍 ...

    10. 【面试篇】寒冬求职季之你必须要懂的原生JS(中)

      互联网寒冬之际,各大公司都缩减了HC,甚至是采取了“裁员”措施,在这样的大环境之下,想要获得一份更好的工作,必然需要付出更多的努力. 一年前,也许你搞清楚闭包,this,原型链,就能获得认可.但是现在 ...