原文:Elasticsearch入门教程(二):Elasticsearch核心概念

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

基本概念介绍

Elasticsearch是一个基于Lucene构建的开源、分布式、RESTful的搜索引擎,能够实现近实时(NRT)搜索,稳定、可靠、安装方便。Elasticsearch 不仅是一种全文索引技术,也是一种面向文档型NOSQL数据库。一个采用Restful API标准的高扩展性和高可用性的实时数据分析的全文搜索工具。

名词解释

  • Cluster(集群):一个集群就是由一个或者多个node组成在一起,共同工作,共同分享整个数据具有负载均衡的集群

    • Node(节点):单个装有Elasticsearch服务并且提供故障转移和扩展的服务器,有一种节点被称为 “协调节点”
    • Index:索引或者称为索引库,Index相当于关系型数据库的Database。
    • Type:类型,这是索引下的逻辑划分,一般把有共性的文档放到一个类型里面,相当于关系型数据库的table。
    • Document(文档):文档,一个文档是一个可以被索引的基础信息单元, Json结构,这点跟MongoDB差不多。es是分布式的,所以一个文档会被分配到不同的节点上,一个文档究竟被分配到哪个分片上是通过这个公式来计算的 shard = hash(routing) % number_of_primary_shards,其中主分片是在创建索引时设置的,routing是一个变量,一般是文档的id,也可以通过api显示指定,通过控制routing的值来控制将文档分配到指定的分片上来
    • Field(字段):Field是Elasticsearch的最小单位,相当于数据的某一类
    • Mapping: 映射,用于定义json的结构,类似于关系型数据库中建表时定义的表的结构
  • Shards(分片):分片是一个功能完整的搜索引擎,一个分片是一个Lucene的实例。一般是应用程序和索引库进行交互,索引库和分片进行交互,分片分为主分片和副本分片(只是一个主分片的拷贝,副本分片作为硬件故障时保护数据不丢失的冗余备份,并为搜索和返回文档等读操作提供服务),Elasticsearch将索引分成若干份,每个部分就是一个shard,类似于藏宝图,一张藏宝图撕成多片,所有片拼接起来才是完整的一张图。
  • Replicas(复制):Replicas是索引一份或者多份的拷贝,为了防止数据的丢失和负载均衡

一个集群包含多个节点

一个节点就是一个es实例

一个实例可以有多个分片

一个分片就是一个lucene实例

// 例如将一篇文档比喻成一张图,将一张图分成4分,允许一份复制,即第三列是第二列的复制

// 假如某个数据丢失了,可以使用复制的图片

关系型数据库和ES的类比:

关系数据库 ⇒ 数据库(Database) ⇒ 表(Table) ⇒ 行(Row) ⇒ 列(Column)

Elasticsearch ⇒ 索引(Index) ⇒ 类型(Type) ⇒ 文档(Document) ⇒ 字段(Field)

ES存储中是按照:索引index->类型type->文档document->字段field 级别层次划分的.

ES集群可以包含多个索引,每个索引可以包含多个类型,每个类型可以包含多个文档,每个文档可以包含多个字段

倒排索引 Inverted index

倒排索引被用来存储在全文搜索下某个单词在一个文档或者一组文档中的存储文字的映射

// "我爱中国" 分词如下
token start_offset end_offset type position
我 0 1 CN_CHAR 0
爱 1 2 CN_CHAR 1
中国 2 4 CN_WORD 2 // “中国你好” 分词如下
token start_offset end_offset type position
中国 0 2 CN_WORD 0
你好 2 4 CN_WORD 1 // 分词表
WordID 分词
1 我
2 爱
3 中国
4 你好 // 文档表
DocID content
1 我爱中国
2 中国你好 // 倒排索引表
WordID 分词 文档1 文档2
1 我 √
2 爱 √
3 中国 √ √
4 你好 √ 如果查询”中国“就可以知道,中国在文档1和文档2中出现了,直接返回文档1和文档2中的内容 横向:可以知道每个分词都出现在哪些文档中了
纵向:每个文档都有哪些分词
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36

我的微信公众号:

Elasticsearch入门教程(二):Elasticsearch核心概念的更多相关文章

  1. Elasticsearch入门教程(六):Elasticsearch查询(二)

    原文:Elasticsearch入门教程(六):Elasticsearch查询(二) 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:h ...

  2. Elasticsearch入门教程(四):Elasticsearch文档CURD

    原文:Elasticsearch入门教程(四):Elasticsearch文档CURD 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接: ...

  3. Elasticsearch入门教程(三):Elasticsearch索引&映射

    原文:Elasticsearch入门教程(三):Elasticsearch索引&映射 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文 ...

  4. Elasticsearch入门教程(一):Elasticsearch及插件安装

    原文:Elasticsearch入门教程(一):Elasticsearch及插件安装 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:h ...

  5. Elasticsearch入门教程(五):Elasticsearch查询(一)

    原文:Elasticsearch入门教程(五):Elasticsearch查询(一) 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:h ...

  6. RabbitMQ入门教程(二):简介和基本概念

    原文:RabbitMQ入门教程(二):简介和基本概念 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn ...

  7. JasperReports入门教程(二):中文打印

    JasperReports入门教程(二):中文打印 背景 在上一篇中我们介绍了JasperReport的基本入门,也展示了一个报表.但是我们的示例都是使用的英文,如果我们把需要打印的数据改为中文会怎么 ...

  8. 无废话ExtJs 入门教程二十一[继承:Extend]

    无废话ExtJs 入门教程二十一[继承:Extend] extjs技术交流,欢迎加群(201926085) 在开发中,我们在使用视图组件时,经常要设置宽度,高度,标题等属性.而这些属性可以通过“继承” ...

  9. 无废话ExtJs 入门教程二十[数据交互:AJAX]

    无废话ExtJs 入门教程二十[数据交互:AJAX] extjs技术交流,欢迎加群(521711109) 1.代码如下: 1 <!DOCTYPE html PUBLIC "-//W3C ...

随机推荐

  1. win10 exe如何添加或禁用开机自启动项

    一.添加开机自启动 1,先打开存放自启动软件文件的文件夹 方法①:在文件搜索框中输入或粘贴以下地址: C:\ProgramData\Microsoft\Windows\Start Menu\Progr ...

  2. SpringMVC的 transferTo使用

    在开发Web应用程序时比较常见的功能之一,就是允许用户利用multipart请求将本地文件上传到服务器,而这正是Grails的坚固基石——SpringMVC其中的一个优势.Spring通过对Servl ...

  3. Implement TensorFlow's next_batch for own data

    The version of numpy data import numpy as np class Dataset: def __init__(self, data): self._index_in ...

  4. 调用百度API写了一个js翻译小工具

    目前还未完成的功能有:textarea高度自适应,移动端与pc端都写了.效果如图: html: <!DOCTYPE html> <html lang="en"&g ...

  5. 第八周课程总结 & 实验报告(六)

    第八周课程总结 一.包装类 介绍 装箱与拆箱 应用 二.异常 基本概念 基本格式 异常类的继承结构 throws关键字 throw关键字 Exception类和RuntimeException类 自定 ...

  6. Dijk入门(杭电2544题)

    #include<iostream> #include<cstring> using namespace std; #define INF 0x3f3f3f3f int n,m ...

  7. 黑马lavarel教程---6、简单验证

    黑马lavarel教程---6.简单验证 一.总结 一句话总结: 1.验证的最简单实例:$request的validate方法,验证通过可以继续进行,验证失败就重定向 2.中文提示可以用中文语言包 3 ...

  8. 使用SNMP监控服务器运行情况

    系统监测的基本概念及分类: a.系统监测的概述: 如何对现有IT架构的整体以及细节运行情况进行科学.系统和高效地监测是目前各企业运维和管理部门一项非常重要的工作内容.随着当前企业IT环境中服务器.应用 ...

  9. Android 客户端应用开发结构框架

    本文算是一篇漫谈,谈一谈关于android开发中工程初始化的时候如何在初期我们就能搭建一个好的架构.关于android架构,因为手机的限制,目前我觉得也确实没什么大谈特谈的,但是从开发的角度,看到整齐 ...

  10. C++类继承方式及实践

    直接上图: 以及: 实践如下: #include <iostream> using namespace std; class Father{ private: int father1; i ...