本文共 1210 字,大约阅读时间需要 4 分钟。
Elasticsearch简介
Elasticsearch是一个基于的搜索服务。它提供了一个分布式多用户的全文搜索引擎,基于RESTful web接口,它是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎
Elasticsearch特点
高亮展示
超越精确匹配
确保结果的相关性
给予自动提示
提供快速查询
Elasticsearch依赖倒排索引,为用户快速的呈现搜索的相关结果
Elasticsearch的优缺点
优点:
速度快,负载强,面对海量的数据时,搜索速度极快
横向可扩展性:只要增加一台服务器,做一点配置,启动ES进程就可以并入集群
高分布:同一个索引分成多个分片,类似于HDFS的块机制,分而治之的方式来提升处理效率
高可用:一个分片可以设置多个复制,使某台服务器宕机情况下,集群仍可照常运行,并会把由于服务器宕机丢失的复制恢复到其它可用节点上,类似于HDFS的复制机制(HDFS中默认是3份复制)
缺点:
各节点的一致性问题:其默认的机制是通过多播机制,同步元数据信息,但是在比较繁忙的集群中,可能会由于网络的阻塞,或者节点处理能力达到饱和导致各节点元数据不一致——也就是所谓的脑裂问题,这样会使集群处于不一致状态。目前并没有一个彻底的解决方案来解决这个问题,但是可以通过将工作节点与元数据节点分开的部署方案来缓解这种情况。
没有细致的权限管理机制,没有像MySQL那样的分各种用户,有不同的权限。在操作上的限制需要自己开发系统完成
Elasticsearch相关概念
用关系型数据库就会想到建立一张User表,再建字段等,而在Elasticsearch的文件存储,Elasticsearch是面向文档型数据库,一条数据在这里就是一个文档,用JSON作为文档序列化的格式,比如下面这条用户数据
{
"name" : “Jack",
"sex" : 1
"age" : 25,
"remark" : “hello world"
}
Elasticsearch文档映射
映射概述
Elasticsearch的核心概念和关系数据库对比,索引(index)相当于数据库,类型(type)相当于数据表,映射(Mapping)相当于数据表的表结构
映射可以分为动态映射和静态映射
动态映射
在关系数据库中,需要事先创建数据库,然后在该数据库下创建数据表,并创建表字段、类型、长度、主键等,最后才能基于表插入数据
而Elasticsearch中不需要定义Mapping映射(即关系型数据库的表、字段等),在文档写入Elasticsearch时,会根据文档字段自动识别类型,这种机制称之为动态映射
静态映射
是在Elasticsearch中也可以事先定义好映射,包含文档的各字段类型、分词器等,这种方式称之为静态映射
动态映射规则如下
Elasticsearch基于倒排索引的实现
转载地址:http://wvazi.baihongyu.com/