前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ElasticSearch(ES)简介及使用指引

ElasticSearch(ES)简介及使用指引

作者头像
leon_橙
发布2019-12-12 11:28:03
2.2K0
发布2019-12-12 11:28:03
举报
文章被收录于专栏:Java后台Java后台

ES 简介

Elasticsearch 是一个分布式、Restful 风格的搜索数据分析引擎,能够解决常规和各种类型数据的存储及检索需求。作为ELK和ElasticStack的核心,它能够集中存储数据,通过Elasticsearch 能够执行及合并多种类型的搜索(结构化数据、非结构化数据、地理位置、经纬度坐标等数据结构)。

ES 的特点和优势

  • 分布式实时文件存储,可将每一个字段存入索引,使其可以被检索到
  • 实时分析的分布式搜索引擎,分布式,索引拆分成多个分片,集群中的数据节点可以承载一个或多个分片,并且协调和处理各种操作,负载再平衡和路由大多数情况下自动完成。
  • 可以扩张到上百台服务器,处理PB级别的结构化和非结构化数据,也可以运行在单台PC上。
  • 支持插件机制,分词插件、同步插件、Hadoop插件、可视化插件。

ES 一些基本概念

  • Cluster:集群。ES 可以作为一个独立的单个搜索服务器。不过,为了处理大型数据集,实现容错和高可用,ES可以运行在许多相互合作的服务器上,这些服务器上的 ES 实例集合成为集群。
  • Node:节点。形成集群的每个服务器上的实例分为节点。
  • Shard:分片。当有大量的文档时,由于内存的限制、磁盘处理能力不足、无法足够快的响应客户端的请求等,一个节点可能不够用,这种情况下,数据可以分为较小的分片,每个分片放到不同的服务器上,当查询的索引分布在多个分片上时,ES 会把查询发送给相关的分片,并将结果组合在一起,而应用程序不知道分片的存在,即:这个过程对用户来说是透明的。
  • Replica:副本。为提高查询吞吐量或实现高可用,可以使用分片副本,副本是一个分片的精确复制,每个分片可以有 0 个或者多个副本。

ES 与传统数据库对应关系

ES 和传统关系型数据库结构的一些对应关系

关系型数据

Elasticsearch

备注

数据库 Database

Index

表 Table

Type

6.x 以上已不支持多 type

记录 Record

document

表结构 Scheme

mapping

列 Column

Field

ES 的数据结构

ES 存储的数据字段类型很丰富,主要有:核心类型、复合类型和特殊类型

一级分类

二级分类

具体类型

核心类型

字符串类型

string, text, keyword

整型类型

integer, long, short, byte

浮点类型

double, float, half_float, scaled_float

逻辑类型

boolean

日期类型‍‍

date

范围类型

range(integer_range, float_range, long_range, double_range, date_range)

二进制类型

binary

复合类型

对象类型

object

嵌套类型

nested

地理类型

地理坐标类型

Geo-point

地理地图‍

Geo-shape

特殊类型

IP 类型

ip

自动补全类型‍

completion

统计类型

token_count

附件类型

attachement

过滤器类型

percolator

字段类型说明:

string 类型在旧版本使用较多,从 5.x 开始不再支持 string, 而用 text 和 keyword 替代,text 类型表明,当一个字段是要被全文搜索的,比如Email内容、产品描述,应该使用text类型,设置text类型以后,字段内容会被分析和分词,在生成倒排索引以前,字符串会被分析器分成一个一个词项。Keyword 类型适用于索引结构化得字段,keyword类型的字段只能通过精确值搜索到。

nested 嵌套类型是 object 数据类型的专用版本,允许对象数据可以彼此独立查询的方式索引。专用于存储 JSON 类型数据,可以通过 JSON 内部字段进行查询。

geo_point 类型存储的是经纬度数值,可以按距离对文档进行排序和过滤,而位置距离计算都可以通过查询 ES 得出。

ES 的倒排索引

传统关系型数据库(以 MySQL 为例),其索引结构是查找树(“B+”树)结构,其叶子节点存储索引数据域,其他节点进行查找索引。其索引过程是直接通过二叉查找树找到对应记录。可以理解为通过一列(主键索引)或几列(组合索引)来查找对应记录。

图 1.MySQL "B+" Tree Index

而 ES 的索引确十分不同,它是将文档(document)先经过一定的分词器分词之后,存储分词结果作为数据索引。倒排索引存储的是文档分词结果与文档之间的映射关系。

图 2. ElasticSearch Inverted Index

以上就是 ElasticSearch 的一些基本简介,下一篇我们继续讨论 ElasticSearch 的基本使用,包括创建索引、数据备份和恢复、索引模板及分片路由的使用。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-11-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java后台 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
Elasticsearch Service
腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档