ElasticSearch扫盲之一:ElasticSearch基本概念介绍

ElasticSearch是一款高扩展性的、开源的、全文搜索和分析引擎,那么我们先从以下几个方面来粗步了解它:

一、什么是搜索引擎

搜索引擎,即指根据一定的策略、运用特定的计算机程序从互联网上搜集信息,在对信息进行组织和处理后,为用户提供检索服务,将用户检索相关的信息展示给用户的系统.

小到一个网站的内部搜索功能,如博客文章的搜索,电商平台商品的搜索,大到提供全网搜索的网站,如谷歌、百度等

二、倒排索引

提到搜索引擎就不得不提倒排索引,索引就类似于目录,平时我们使用的都是索引,都是通过主键定位到某条数据,那么倒排索引呢,刚好相反,数据对应到主键.这里以一个博客文章的内容为例:

1.索引
文章ID 文章标题 文章内容
1 浅析JAVA设计模式 JAVA设计模式是每一个JAVA程序员都应该掌握的进阶知识
2 JAVA多线程设计模式 JAVA多线程与设计模式结合

我们可以通过文章ID直接定位到具体的某篇文章

2.倒排索引

假如,我们有一个站内搜索的功能,通过某个关键词来搜索相关的文章,那么这个关键词可能出现在标题中,也可能出现在文章内容中,那我们将会在创建或修改文章的时候,建立一个关键词与文章的对应关系表,这种,我们可以称之为倒排索引,因此倒排索引,也可称之为反向索引.如:

关键词 文章ID
JAVA 1
设计模式 1,2
多线程 2

注:这里涉及中文分词的问题

三、ElasticSearch介绍

1.ElasticSearch的主要功能

ElasticSearch的主要功能,可以大致分为以下几个部分:

  • 存储:海量数据存储(替代传统数据库或NoSQL数据库,存储不是目的,是为检索或分析服务的)
  • 检索:根据一定条件对存储的数据进行检索
  • 分析:通过存储的数据,通过一些分析手段,对数据进行聚合或分析,形成一些分析数据
2.ElasticSearch使用场景
  • 1.在线商城商品检索
  • 2.日志或交易数据收集,并进行数据分析和数据挖掘
  • 3.数据变更监听、告警和通知
  • 4.海量商业数据可视化查询、分析,为智能商业系统提供依据
3.ElasticSearch核心概念
(1)从外部看
  • cluster : 即集群,具有相同集群名称的节点的集合
  • node : 即节点,运行ES的实例
  • shards : 即分片,将索引细分为多个
  • replicas : 副本,即对分片的复制
  • NRT : 近实时

ElasticSearch各概念之间的关系

  • 一个集群由多个节点(实例)组成
    - 一个节点可能存储一个分片,也可能存储多个分片
    • 分片是存储整个数据的某部分数据,多个分片存储的数据组成完整的数据
    • 副本是主分片数据的副本,是分片数据的备份
(2)从内部看
  • index : 具有某些特征的文档集合
  • type : 索引的逻辑类别(6.0不建议再使用,7.x将删除)
  • document : 可以建立索引的基本信息单元(类似于一条记录)
  • mapping : 类似于记录的结构定义,定义字段的数据类型
  • field : 字段(域)

ElasticSearch中的相关概念与关系型数据库之间的对应:

ElasticSearch中的相关概念 关系型数据库如MySQL中的相关概念 备注
index database/table 数据库名称或表名称
type table 表名称(不再建议使用)
document row 一行记录
mapping schema 数据库表结构
field column 某个字段
4.ElasticSearch其他说明
  • ElasticSearch与关系数据库不同,它在进行数据操作前,不用先定义数据结构(即定义mapping),ElasticSearch会自动创建mapping,如果有特殊的字段定义,则需要定义mapping
  • 操作ElasticSearch都是通过Restful接口来实现的
    • POST : 新增或修改数据
    • PUT : 修改数据
    • GET : 获取(查询)数据
    • DELETE : 删除数据
5.操作ElasticSearch的方式
  • 通过客户端API
  • 通过Kibana
  • 通过curl命令操作

关于curl命令补充说明:

  1. curl http://www.baidu.com
  • GET请求:直接加上url即可
  • POST请求:通过-d指定表单参数或使用-X POST来指定请求方式
  • PUT请求:通过-X PUT来指定PUT请求
  • DELETE:通过-X DELETE来指定DELETE请求
6.ElasticSearch相关的生态

ElasticSearch只是Elastic栈的一个组成部分

  • ElasticSearch : 数据存储、检索和分析引擎
  • Kibana : 数据可视化平台
  • Beats : 数据采集平台
    • Filebeat : 文件(日志)数据采集
    • Metricbeat : 指标数据采集
    • Packetbeat : 网络数据采集
    • Winlogbeat : Windows事件日志采集
    • Auditbeat : 审计数据采集
    • Heartbeat : 运行时间监控数据采集
    • Functionbeat : 无需服务器的数据采集
  • Logstash : 数据集中、转换和存储
  • ECE(ELASTIC CLOUD ENTERPRISE) : 集中编排一系列 Elasticsearch 集群
  • APM : 应用程序性能管理