elasticsearch学习笔记

在学习elasticsearch之前,我们先要弄清楚几个问题,就是what,why和how

1.what-------elasticsearch是什么

官方概念:elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便

 比较笼统,可以更加直观地描述:

  • 分布式的实时文件存储,每个字段都被索引并可被搜索
  • 分布式的实时分析搜索引擎
  • 可以扩展到上百台服务器,处理PB级结构化或非结构化数据

  其实只要知道这几个关键字:分布式 实时 搜索引擎

2.why----------为什么用elasticsearch

  在引入elasticsearch前,我们的数据一般都存储在mysql上,所有的检索都是直接在数据库的查询,当数据库的数据量达到一定量时,数据库的检索效率就会很低,对此我们或许会有很多解决方案,比如对数据库采用分库分表(主从设置),数据库分库分表的确可以解决大部分数据量性能问题,但是同样还是会有两个问题无法避免:1分表多表的关联查询难度很大,不易实现(目前市场上主流的集中分库分表插件都没有很好的解决)2:没有建立索引的字段查询效率依旧不高  ; 也有人说可以采用Hbase,的确Hbase能够支持的数据量确实大(一个表可以有数十亿行,上百万列),但是它的检索是都是行级或者range,并不支持复杂的查询,一般可以用于数据挖掘(统计报表类的比较合适);   于是基于以上场景,我们去分析elasticsearch的几个特点:分布式(多shard的方式保证数据安全,也会提供自动resharding),一般不会因为数据量有性能问题,实时:elasticsearch的检索速度非常快,接近实时(注意刚刚存储的数据)  搜索引擎:相比Hbase,es的定位就是搜索索引,支持全文检索;

3.how----------我们如何使用elasticsearch

  es其实使用起来非常方便,上手很容易,具体教程我会在下一节给出

  使用elasticsearch前,我们先得了解它的几个概念:

  Node 与 Cluster(节点与集群)

  Elastic 本质上是一个分布式数据库,允许多台服务器协同工作,每台服务器可以运行多个 Elastic 实例。

单个 Elastic 实例称为一个节点(node)。一组节点构成一个集群(cluster)

  Index(索引)

 索引是一类文档的集合 ES会索引所有字段,经过处理后写入一个反向索引(Inverted Index)。查找数据的时候,直接查找该索引。

所以,Elastic 数据管理的顶层单位就叫做 Index(索引)。它是单个数据库的同义词。每个 Index 的名字必须是小写(可以把把索引当成数据库)。

  type(类型)

类型可以理解成一个索引的逻辑分区,用于标识不同的文档字段信息的集合。但是由于ES还是以索引为粗粒度的单位,因此一个索引下的所有的类型,都存放在一个索引下。这也就导致不同类型相同字段名字的字段会存在类型定义冲突的问题。

在2.0之前的版本,是可以插入但是不能搜索;在2.0之后的版本直接做了插入检查,禁止字段类型冲突(据说es在6.x之后会取消type)。

  document(文档)

 文档是存储数据信息的基本单元,使用json来表示。

  shard与replica (分片与备份)

在ES中,索引会备份成分片,每个分片是独立的lucene索引,可以完成搜索分析存储等工作。分片的好处:

分片的好处:

1 如果一个索引数据量很大,会造成硬件硬盘和搜索速度的瓶颈。如果分成多个分片,分片可以分摊压力。

2 分片允许用户进行水平的扩展和拆分

3 分片允许分布式的操作,可以提高搜索以及其他操作的效率

备份的好处

1 当一个分片失败或者下线时,备份的分片可以代替工作,提高了高可用性。

2 备份的分片也可以执行搜索操作,分摊了搜索的压力。

ES默认在创建索引时会创建5个分片,这个数量可以修改。

了解了elasticsearch的基本概念之后,我们就可以接下去讲如何使用elasticsearch了

时间: 2024-11-05 03:48:58

elasticsearch学习笔记的相关文章

elasticsearch学习笔记——相关插件

logstash-input-jdbc学习 ES(elasticsearch缩写)的一大优点就是开源,插件众多.所以扩展起来非常的方便,这也造成了它的生态系统越来越强大.这种开源分享的思想真是与天朝格格不入啊.国内的开源社区做了也很长时间,可是也没出现什么拿的出手的东西,可能只还有阿里比较注重分享一些. ES的查询速度非常快,搜索非常快.但是呢,我们的数据还是主要存在传统的关系型数据库中的.有没有什么办法可以将数据库中的数据实时同步到ES中呢.logstash就是这么一个东西. Logstash

Elasticsearch学习笔记-03.1集群健康

本文系本人根据官方文档的翻译,能力有限.水平一般,如果对想学习Elasticsearch的朋友有帮助,将是本人的莫大荣幸. 原文出处:https://www.elastic.co/guide/en/elasticsearch/reference/current/_cluster_health.html 让我们以一个基础的健康检查开始,用这个检查我们可以得知我们的集群工作状态如何.咱们来使用curl做这个检查,不过你也可以使用任何能发起HTTP/REST请求的工具来做这个练习.假设我们仍旧在启动E

Elasticsearch学习笔记-03.3创建索引

来吧,咱们一起创建一个名为"customer"的索引,然后查看集群中的所有索引: PUT /customer?pretty GET /_cat/indices?v 第一个命令使用PUT创建了一个名为customer的索引.我们简单的在命令后追加了一个pretty参数,用于将JSON类型的返回值格式化后打印在控制台. 我们也可以使用POST MAN操作,我们会得到类似下图所示的返回结果: 第二个命令的结果告诉我们(为方便查看,我直接在浏览器中打开了链接:http://localhost:

Elasticsearch学习笔记-03.2查看索引列表

使用下面的命令可以查看所有的索引: GET /_cat/indices?v 或直接在浏览器中打开连接: http://localhost:9200/_cat/indices?v 返回结果: health status index uuid pri rep docs.count docs.deleted store.size pri.store.size 表示在咱们的集群中还没有创建任何索引 本文系本人根据官方文档的翻译,能力有限.水平一般,如果对想学习Elasticsearch的朋友有帮助,将是

Elasticsearch学习笔记-02安装

本文系本人根据官方文档的翻译,能力有限.水平一般,如果对想学习Elasticsearch的朋友有帮助,将是本人的莫大荣幸.原文出处:https://www.elastic.co/guide/en/elasticsearch/reference/current/_installation.html Elasticsearch要求Java最低版本为8. 截止本文撰写的时间,推荐您使用Oracle JDK 1.8.0_73版本.JAVA的安装会因为系统环境的不同而有很大差异,所以我们在这里不会涉及太多

Elasticsearch学习笔记-03探索集群

本文系本人根据官方文档的翻译,能力有限.水平一般,如果对想学习Elasticsearch的朋友有帮助,将是本人的莫大荣幸.原文出处:https://www.elastic.co/guide/en/elasticsearch/reference/current/_exploring_your_cluster.html REST API现在咱们已经成功让Elasticsearch的节点(和集群)运行良好了,下一步来了解一下如何与之通信.得之吾幸,Elasticsearch提供了非常广泛切强大的RES

Elasticsearch 学习笔记1 入门

参考资料 官方学习文档:https://www.elastic.co/guide/index.html 入门中文权威指南: http://es.xiaoleilu.com/ 1 认识es elasticsearch功能: - 全文检索(可以解决DB检索问题(文本检索性能,全文检索等)) - 分布式的实时文件存储,每个字段都被索引并可被搜索(牛逼) - 分布式的实时分析搜索引擎(实时性能好) - 可以扩展到上百台服务器,处理PB级结构化或非结构化数据(容易扩展,支持大数据量) 基于apache l

ElasticSearch学习笔记-01 简介、安装、配置与核心概念

一.简介 ElasticSearch是一个基于Lucene构建的开源,分布式,RESTful搜索引擎.设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便.支持通过HTTP使用JSON进行数据索引. Lucene只是一个框架,要利用它的功能,需要使用JAVA,并且在程序中集成Lucene.更糟的是,Lucene非常复杂,需要做很多的学习了解,才能明白它是如何运行的. Elasticsearch使用Lucene作为内部引擎,但是在使用它做全文搜索时,只需要使用统一开发好的API即可,

Elasticsearch学习笔记-04修改数据

Elasticsearch提供了近乎实时操作和检索数据的能力.默认情况下,在你新增/更新/删除数据之后,大概只有一秒的延迟即可反应在最新的搜索结果中.和其他的平台例如SQL的及时生效比较起来还是有比较大的区别的. (新建)索引/替换文档我们之前已经知道了如何索引一个文档,咱们再来复习一下: PUT /customer/external/1?pretty { "name": "John Doe" } 上面的命令会在customer索引中创建external类型的ID为

Elasticsearch学习笔记-04.1更新文档

除了创建和替换文档,我们也可以更新文档.需要注意的是Elasticsearch在底层并不会整的更新文档.当我们执行更新操作的时候,Elasticsearch会一次性完成先删除,再新建一个文档.下面的例子示意了如何将我们之前索引的ID为1的文档的name字段修改为"Jane Doe": POST /customer/external/1/_update?pretty { "doc": { "name": "Jane Doe" }