Elasticsearch介绍,一些概念的笔记

Elasticsearch,分布式,高性能,高可用,可伸缩的搜索和分析系统

  • 什么是搜索?
  • 如果用数据库做搜索会怎么样?
  • 什么是全文检索和Lucene?
  • 什么是Elasticsearch?
  • Elasticsearch的功能

什么是搜索

提供一种数据提取的服务

垂直搜索(站内搜索)

互联网的搜索:电商网站,招聘网站,新闻网站,各种app IP系统的搜索:OA软件,会议管理,日程管理,项目管理,员工管理,搜索"张三",

如果用数据库做搜索会怎么样?

当如果你用电商系统搜索的时候 select * from products where product_name like "%牙膏%"

1,每次都要从数据库的搜索字段去判断 2,不能分词

你能匹配出 高露洁牙膏、中华牙膏、佳洁士牙膏,你能匹配出来,当如果有黑人牙盐膏之类的。又或者如果你搜索生化危机但是打错打成了生化机结果出来肯定不是你想要的

什么是全文检索和Lucene

全文检索: 当如果你搜索一个新闻的时候比如你搜索鹿晗那你有可能想要的结果是鹿晗视频,鹿晗新闻,鹿晗女友,鹿晗绯闻等,这些东西我们都需要提供,我们需要做的是在关键词这里将这些词汇进行分词,然后整体的结果我们在每个分词那里用一个数字来表示,这样当关键词鹿晗出现的时候你这四个词的,1,2,3都会有结果的显示,这样做的好处就是你搜索鹿晗闻的时候他能在关键词有鹿晗的标识一下,当有闻的位置ids在看一下
倒排索引:进行搜索的话,假设100万条数据,拆分出来的词语,假设有1000万的词语,那么在倒排索引中就有1000万行,我们可能就不需要1000万次了,可能几次的要求匹配就搜索到了

lucene:就是一个jar包,里面包含了封装好的各种建立倒排索引,以及进行搜索的代码,包括各种算法。然后我们基于lucene的API进行开发,用lucene我们就可以去将已有的数据建立索引,lucene会在本地磁盘上,给我们组织的索引的数据结构,另外我们也能根据lucene提供的功能和api来针对磁盘上的索引数据进行搜索。

  • elasticsearch:底层封装了lucene 有以下几个特点

    • 自动维护数据分布到多个节点索引的建立,还有搜索请求分布到多个节点的执行
    • 自动维护数据的冗余副本,保证说一些机器宕机了,不会丢失任何的数据
    • 封装了更多的高级功能,以给我们提供更多高级的支持,让我们快速的开发应用,开发更加复杂的应用:复杂的搜索功能,聚合分析的功能,基于地理位置的搜索(距离我多远的公交站)
  • Elasticsearch的功能

    • 1)分布式的搜索引擎和数据分析引擎

      • 搜索:百度,网站的站内搜索,IT系统的检索
      • 数据分析:比如某个商品销量前10的商家有哪些。
    • 2)全文检索,结构化检索,数据分析
      • 全文检索:条件的匹配
      • 结构化检索:我想搜索的商品分类为日化用品的商品有哪些
      • 部分匹配、自动完成、搜索纠错、搜索推荐
    • 3)对海量数据进行实时的处理
      • 分布式:ES自动可以将海量数据分散到多台服务器上去存储和检索
      • 海量数据的处理:分布式以后,就可以采用大量的服务器去存储和检索数据,自然而然就可以实现海量数据的处理了
      • 近实时:检索个数据要花费1个小时(这就不是近实时,离线普处理,batch-processing):在秒级别对数据进行搜索和分析

跟分布式/海量数据相反的:lucene,单机应用,只能在单台服务器上使用,最多只能处理单台服务器可以处理的海量数据

  • Elasticsearch的使用场景

    1. 维基百科
    2. stack overflow国内外程序异常讨论论坛,IT问题,程序的报错
    3. github等
  • Elasticsearch的特点
    1. 可以作为一个大型分布式集群(数百台服务器)技术,处理PB级数据,服务大公司;也可以运行在单机上,服务小公司
    2. Elasticsearch不是什么新技术,主要是将全文检索、数据分析以及分布式技术,合并在了一起,才形成了独一无二的ES;lucene(全文检索),商用的数据分析软件(也是有的),分布式数据库(mycat)
    3. 对用户而言,是开箱即用的,非常简单,作为中小型的应用,直接3分钟部署一下ES,就可以作为生产环境的系统来使用了,数据量不大,操作不是太复杂
    4. 数据库的功能面对很多领域是不够用的(事务,还有各种联机事务型的操作);特殊的功能,比如全文检索,同义词处理,相关度排名,复杂数据分析,海量数据的近实时处理;Elasticsearch作为传统数据库的一个补充,提供了数据库所不不能提供的很多功能

elasticsearch的核心概念

(1)Near Realtime(NRT):近实时,两个意思,从写入数据到数据可以被搜索到有一个小延迟(大概1秒);基于es执行搜索和分析可以达到秒级
(2)Cluster:集群,包含多个节点,每个节点属于哪个集群是通过一个配置(集群名称,默认是elasticsearch)来决定的,对于中小型应用来说,刚开始一个集群就一个节点很正常
(3)Node:节点,集群中的一个节点,节点也有一个名称(默认是随机分配的),节点名称很重要(在执行运维管理操作的时候),默认节点会去加入一个名称为“elasticsearch”的集群,如果直接启动一堆节点,那么它们会自动组成一个elasticsearch集群,当然一个节点也可以组成一个elasticsearch集群
(4)Document&field:文档,es中的最小数据单元,一个document可以是一条客户数据,一条商品分类数据,一条订单数据,通常用JSON数据结构表示,每个index下的type中,都可以去存储多个document。一个document里面有多个field,每个field就是一个数据字段。
(5)Index:索引,包含一堆有相似结构的文档数据,比如可以有一个客户索引,商品分类索引,订单索引,索引有一个名称。一个index包含很多document,一个index就代表了一类类似的或者相同的document。比如说建立一个product index,商品索引,里面可能就存放了所有的商品数据,所有的商品document。
(6)Type:类型,每个索引里都可以有一个或多个type,type是index中的一个逻辑数据分类,一个type下的document,都有相同的field,比如博客系统,有一个索引,可以定义用户数据type,博客数据type,评论数据type。
(7)shard:单台机器无法存储大量数据,es可以将一个索引中的数据切分为多个shard,分布在多台服务器上存储。有了shard就可以横向扩展,存储更多数据,让搜索和分析等操作分布到多台服务器上去执行,提升吞吐量和性能。每个shard都是一个lucene index。
(8)replica:任何一个服务器随时可能故障或宕机,此时shard可能就会丢失,因此可以为每个shard创建多个replica副本。replica可以在shard故障时提供备用服务,保证数据不丢失,多个replica还可以提升搜索操作的吞吐量和性能。primary shard(建立索引时一次设置,不能修改,默认5个),replica shard(随时修改数量,默认1个),默认每个索引10个shard,5个primary shard,5个replica shard,最小的高可用配置,是2台服务器。

3、elasticsearch核心概念 vs. 数据库核心概念

Elasticsearch 数据库

Document 行
Type 表
Index 库

原文地址:https://www.cnblogs.com/songcheng/p/8328374.html

时间: 2024-10-10 15:30:59

Elasticsearch介绍,一些概念的笔记的相关文章

Elasticsearch介绍及安装部署

本节内容: Elasticsearch介绍 Elasticsearch集群安装部署 Elasticsearch优化 安装插件:中文分词器ik 一.Elasticsearch介绍 Elasticsearch是一个分布式搜索服务,提供Restful API,底层基于Lucene,采用多shard的方式保证数据安全,并且提供自动resharding的功能,加之github等大型的站点也采用 Elasticsearch作为其搜索服务. 二.Elasticsearch集群安装部署 1. 环境信息 主机名

oracle整体知识的大致介绍(1)-概念

表空间: oracle允许不同类型的数据分开存放,表空间是数据库的逻辑划分. 数据文件: 表空间由同一磁盘上的一个或多个文件组成,这些文件叫做数据文件. 实例: 是存放和控制数据库的软件机制. oracle启动实例时,需要读取init.ora文件. oracle有一个物理结构.一个逻辑结构. 物理结构: 由4类文件组成 数据文件 日志文件,有恢复作用 控制文件,库名.数据文件的位置以及建立日期 参数文件 SGA:全局共享区 包括:       共享池.数据块缓冲区.日志,字典缓冲区. oracl

faster-rcnn系列原理介绍及概念讲解

faster-rcnn系列原理介绍及概念讲解 原文地址:https://www.cnblogs.com/inception6-lxc/p/8390729.html

Elasticsearch介绍

一.基本概念 节点(node)是一个运行着的Elasticsearch实例. 集群(cluster)是一组具有相同cluster.name的节点集合,他们协同工作,共享数据并提供故障转移和扩展功能,当然一个节点也可以组成一个集群.集群中有多个节点,其中有一个为主节点,这个主节点是可以通过选举产生的,主从节点是对于集群内部来说的.es的一个概念就是去中心化,字面上理解就是无 中心节点,这是对于集群外部来说的,因为从外部来看es集群,在逻辑上是个整体,你与任何一个节点的通信和与整个es集群通信是等价

[转]分布式搜索elasticsearch几个概念解析

Document 在Elasticsearch世界(或者Lucene世界中),Document是主要的实体,文档这个单词有特殊的含义.它指的是在Elasticsearch中被存储到唯一ID下的由最高级或者根对象 (root object )序列化而来的JSON.Elasticsearch的documents最终被存储为Lucene documents. 文档元数据 一个文档不只包含了数据.它还包含了元数据(metadata) —— 关于文档的信息.有三个元数据元素是必须存在的,它们是: 名字 说

IOS开发 GCD介绍: 基本概念和Dispatch Queue

iOS的三种多线程技术 1.NSThread 每个NSThread对象对应一个线程,量级较轻(真正的多线程) 2.以下两点是苹果专门开发的“并发”技术,使得程序员可以不再去关心线程的具体使用问题 ØNSOperation/NSOperationQueue 面向对象的线程技术 ØGCD —— Grand Central Dispatch(派发) 是基于C语言的框架,可以充分利用多核,是苹果推荐使用的多线程技术 以上这三种编程方式从上到下,抽象度层次是从低到高的,抽象度越高的使用越简单,也是Appl

【ElasticSearch】ElasticSearch介绍和安装

介绍 ElasticSearch是一个开源的分布式搜索引擎,具备高可靠性,支持非常多的企业级搜索用例.像Solr4一样,是基于Lucene构建的.支持时间时间索引和全文检索.官网:http://www.elasticsearch.org 它对外提供一系列基于java和http的api,用于索引.检索.修改大多数配置. 安装: 1.先安装java环境,配置环境变量. 2.下载来自http://www.elasticsearch.org/download/的 ElasticSearch.再一次,关于

分布式搜索elasticsearch几个概念解析

介绍下es的几个概念: cluster代表一个集群,集群中有多个节点,其中有一个为主节点,这个主节点是可以通过选举产生的,主从节点是对于集群内部来说的.es的一个概念就是去中心化,字面上理解就是无中心节点,这是对于集群外部来说的,因为从外部来看es集群,在逻辑上是个整体,你与任何一个节点的通信和与整个es集群通信是等价的. shards代表索引分片,es可以把一个完整的索引分成多个分片,这样的好处是可以把一个大的索引拆分成多个,分布到不同的节点上.构成分布式搜索.分片的数量只能在索引创建前指定,

elasticsearch几个概念解析

介绍下es的几个概念: cluster      代表一个集群,集群中有多个节点,其中有一个为主节点,这个主节点是可以通过选举产生的,主从节点是对于集群内部来说的.es的一个概念就是去中心化,字面上理解就是无中心节点,这是对于集群外部来说的,因为从外部来看es集群,在逻辑上是个整体,你与任何一个节点的通信和与整个es集群通信是等价的. shards      代表索引分片,es可以把一个完整的索引分成多个分片,这样的好处是可以把一个大的索引拆分成多个,分布到不同的节点上.构成分布式搜索.分片的数