目录
ElasticSearch(简称ES)是一个分布式、Restful的搜索及分析服务器,设计用于分布式计算;能够达到实时搜索,稳定,可靠,快速。和Apache Solr一样,它也是基于Lucence的索引服务器,而ElasticSearch对比Solr的优点在于:
2013年初,GitHub抛弃了Solr,采取ElasticSearch 来做PB级的搜索。 近年ElasticSearch发展迅猛,已经超越了其最初的纯搜索引擎的角色,现在已经增加了数据聚合分析(aggregation)和可视化的特性,如果你有数百万的文档需要通过关键词进行定位时,ElasticSearch肯定是最佳选择。当然,如果你的文档是JSON的,你也可以把ElasticSearch当作一种“NoSQL数据库”, 应用ElasticSearch数据聚合分析(aggregation)的特性,针对数据进行多维度的分析。 ElasticSearch一些国内外的优秀案例:
Cluster和Node ES可以以单点或者集群方式运行,以一个整体对外提供search服务的所有节点组成cluster,组成这个cluster的各个节点叫做node。 Index 这是ES存储数据的地方,类似于关系数据库的database。 Shards 索引分片,这是ES提供分布式搜索的基础,其含义为将一个完整的index分成若干部分存储在相同或不同的节点上,这些组成index的部分就叫做shard。 Replicas 索引副本,ES可以设置多个索引的副本,副本的作用一是提高系统的容错性,当个某个节点某个分片损坏或丢失时可以从副本中恢复。二是提高ES的查询效率,ES会自动对搜索请求进行负载均衡。 Recovery 代表数据恢复或叫数据重新分布,ES在有节点加入或退出时会根据机器的负载对索引分片进行重新分配,挂掉的节点重新启动时也会进行数据恢复。 Gateway ES索引快照的存储方式,ES默认是先把索引存放到内存中,当内存满了时再持久化到本地硬盘。gateway对索引快照进行存储,当这个ES集群关闭再重新启动时就会从gateway中读取索引备份数据。 Discovery.zen 代表ES的自动发现节点机制,ES是一个基于p2p的系统,它先通过广播寻找存在的节点,再通过多播协议来进行节点之间的通信,同时也支持点对点的交互。 Transport 代表ES内部节点或集群与客户端的交互方式,默认内部是使用tcp协议进行交互,同时它支持http协议(json格式)。 ES由java语言实现,运行环境依赖java。ES 1.x版本,官方推荐使用jdk1.7 的环境,建议使用oracle jdk1.8;ES可以去官网下载,本文使用elasticsearch-1.6.0.tar.gz。 (1) 解压elasticsearch-1.6.0.tar.gz,sudo tar -zvxf elasticsearch-1.6.0.tar.gz,在当前路径生成目录:elasticsearch-1.6.0; (2) 配置ES。这里只做最简单的配置,修改ES_HOME/config/elasticsearch.yml文件, 相关配置参数 #集群名称 cluster.name: elasticsearch #节点名称 node.name: "node1" #节点是否存储数据 node.data: true #索引分片数 index.number_of_shards: 5 #索引副本数 index.number_of_replicas: 1 #数据目录存放位置 path.data: /data/elasticsearch/data #日志数据存放位置 path.logs: /data/elasticsearch/log #索引缓存 index.cache.field.max_size: 500000 #索引缓存过期时间 index.cache.field.expire: 5m (3) 启动ES。进入ES安装目录,执行命令:bin/elasticsearch -d -Xms512m -Xmx512m,然后在浏览器输入http://ip:9200/,查看页面信息,是否正常启动。status=200表示正常启动了。 ES索引我们可以理解为数据入库的一个过程。我们知道ES是基于Lucene框架的一个分布式检索平台。索引的同样也是基于Lucene创建的,只不过在其上层做了一些封装。ElasticSearch客户端支持多种语言如PHP、Java、Python、Perl等,下面以Python为例: 一,安装官方提供的Python API |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|