• A+

Elasticsearch技术

Elasticsearch是什么
   Elasticsearch是一个基于Apache Lucene 构建的开源,分布式,RESTful全文搜索引擎。同时,Elasticsearch还是一个分布式文档数据库,其中每个field均是被索引的数据且可被搜索,它能够扩展至数以百计的服务器存储及处理PB级的数据,它可以在很短的时间内存储,搜索和分析大量的数据。

Elasticsearch特点
1.搜索速度非常快。因为Elasticsearch是基于Apache Lucene的开源搜索引擎,而Lucene目前被认为是性能好、功能全的搜索引擎库, 在电商领域使用较多。
2.分布式实时文件存储,可将每一个字段存入索引,使其可以被检索到。
3.可以作为一个大型分布式集群(数百台服务器)技术,处理PB级数据,服务大公司;也可以运行在单机上,服务小公司。
4.上手学习很容易,它提供了许多合理的缺省值,并对初学者隐藏了复杂的搜索引擎理论,对用户而言,是开箱即用的(安装即可使用),可以很快可以搭建一个站内搜索引擎。
5.扩展性非常高。一般扩展有两种方式:1.购置性能更强的服务器,俗称垂直扩展。2.购置更多的服务器,俗称水平扩展。尽管ES能够利用更强的硬件,但垂直扩展毕竟还是有它的极限。而真正的可扩展性来自于水平扩展,通过向集群中添加更多的节点来分布负载,增加可靠性。在大多数数据库中,水平扩展通常都需要你对应用进行一次大的重构来利用更多的节点。相反,ES天生就是分布式的:它知道如何管理多个节点来完成扩展。扩展时,只需要增加服务器,做一点儿配置,启动一下Elasticsearch进程就可以并入集群。
6.高可用性。提供复制(replica)机制,一个分片可以设置多个复制,使得某台服务器在宕机的情况下,集群仍旧可以照常运行,并会把服务器宕机丢失的数据信息复制恢复到其它可用节点上。

Elasticsearch术语概念
索引(index)
是指具有相同结构的文档集合。例如,可以有一个客户信息的索引,一个是产品目录的索引,一个订单数据的索引。一个索引在系统上是一个全部小写的名字,通过这个名字可以用来执行索引、搜索、更新和删除操作等。在一个单一的集群中,您可以定义多个你想要的索引。
类型(type)
在索引中,可以定义一个或多个类型。类型是索引的逻辑分区。在一般情况下,一种类型被定义为具有一组公共字段的文档。例如,让我们假设你运行一个博客平台,并把所有的数据存储在一个索引中。在这个索引中,你可以定义一种类型为用户数据,一种类型为博客数据,另一种类型为评论数据。
文档(document)
一个文档是一个JSON格式的字符串存储在Elasticsearch中。它就像在关系数据库中的表中的一行。每个存储在索引中的一个文件都有一个类型和一个ID,每个文件都是一个JSON对象,存储了零个或者多个字段,或者键值对。原始的JSON文档被存储在一个叫做_source的字段中。当搜索文档的时候默认返回的就是这个字段。
字段(field)
一个文档中包含零个或者多个字段,字段可以是一个简单的值(例如字符串、整数、日期),也可以是一个数组或对象的嵌套结构。字段类似于关系数据库中的表中的列。每个字段都对应一个字段类型,例如整数、字符串、对象等。字段还可以指定如何分析该字段的值。

为了更直观的与我们习惯的数据库理解,与传统数据库MySQL对比下表展示:

Elasticsearch适用的场景
电商网站,可以使用Elasticsearch来存储整个产品目录和库存信息,为客户提供精准搜索,以及可以为客户推荐相关商品。
招聘网站,根据不同的纬度信息(职位,行业,工作经验,学历,工作地点等),快速搜索出符合条件的人才信息。
码农们最喜欢访问的GitHub,其搜索就是基于Elasticsearch构建的,在 github.com/search 页面,你可以检索项目、用户、issue、pull request,还有代码。
数据分析,当有大量数据(千万条以上的记录)时,Elasticsearch可快速查询和分析。如果想做的更好,还可以将得到的数据,结合地理可视化产品,完成更酷,更炫,更直观的效果展示。

GIS应用案例
   目前Elasticsearch已经被各大GIS厂商广泛使用。在SuperMap 9D中,Elasticsearch也是我们产品里重要的空间大数据引擎,同时我们的SuperMap Online产品后台,也将实时访问API接口信息存储到Elasticsearch中。
   如下图所示,我们使用iClient 9D,将查询SuerpMap Online 后台Elasticsearch存储实时访问API接口信息(如:访问模块,用户分布,请求数等),运用地理可视化方法展示。

 

 

所属分类:产品

全部评论: 0

    我有话说:
    ×