ElasticSearch 基础入门

ElasticSearch是一个基于 Lucene 的搜索服务器,它提供了一个分布式的全文搜索引擎。是当前流行的企业级搜索引擎,常用于海量数据分析跟站内搜索。

 

1.Lucene简介

(1)Lucene架构:

文档:索引与搜索的主要数据载体,包含一个或多个字段,存放要写入索引或从索引搜索出来的数据。

字段:文档的一个片段,包括名称跟内容

词项:文本中的某个词

(2)Lucene查询语言:

常见的查询操作符包括:AND  OR   NOT  +  -

+:包含操作符后面词项的文档被匹配

-:匹配的文档不能出现-操作符后面的词项

eg:  +hello-world 查询包含hello但是不包含world的文档

注意:查询中未使用任何操作符,默认使用OR

 Lucene支持两种通配符:?和 *  前者匹配一个字符,后者匹配多个字符

 Lucene还支持模糊查询,使用 字符以及一个紧随其后的整数值

 Lucene支持范围查询,方括号[ ]跟花括号{ }   eg: price:[10.00 TO 15.00}     大于等于10 小于15

 特殊字符处理,通过反斜杠转义   eg:搜索abc"efg , 可以通过abc\"efg查询

 

2.ElasticSearch简介

(1)基本概念

索引:es将数据存储在一个或多个索引中,内部使用Lucene将数据写入索引或从索引中检索数据。

文档:文档由字段构成,没有固定的模式或结构,es中的文档其实就是一个JSON对象。

类型:es中每个文档都有与之对应的type定义,一个索引中可以存储多种文档类型。

节点:单个es服务实例称为节点。

集群:查询压力超过单机负载时,需要多个节点协同处理,这些节点组成的系统称为集群(cluster)

分片:es将数据散布到多个索引上,这些Lucene索引称为分片(shard)

副本:为每个分片创建冗余的副本,当访问压力过大时单机无法处理所有请求时,可以把副本当做最初的主分片。

(2)工作流程

启动流程:当es节点启动时,使用广播技术发现同一个集群中的其他节点,并与它们连接。

集群中会有一个节点被选为管理节点,负责集群的状态管理以及集群发生变化时做出反应。

ElasticSearch 基础入门_第1张图片

故障检测:管理节点会发送ping请求到其他各个节点,然后等待响应。若无响应,则将该节点从集群中移除。

ElasticSearch 基础入门_第2张图片

注意事项建索引只会发生在主分片上,而不是副本上。若某个节点没有主分片,则请求会转发到拥有正确的主分片的节点。

查询分为两个阶段:分散阶段 && 合并阶段(先在分片中查询然后对返回结果进行合并、排序、后续处理)

(3)架构特点

  • 合理的默认配置
  • 对等架构可以避免单点故障(索引分片自动复制)
  • 支持一个索引中存在多种数据结构
  • 准实时搜索和版本同步(分布式架构难免存在 查询延迟和数据不同步问题)

 

参考资料:《深入理解ElasticSearch》

你可能感兴趣的:(ELK,ElasticSearch,lucene)