asticsearch是基于Apache 2.0开源的实时、分布式、分析搜索引擎,相比Lucene,Elasticsearch的上手比较容易,这篇文章主要纪录Elasticsearch的基本概念和基本API。
官方对Elasticsearch的定义:
Elasticsearch is a distributed, RESTful search and analytics engine capable of solving a growing number of use cases. As the heart of the Elastic Stack, it centrally stores your data so you can discover the expected and uncover the unexpected.
你可能已经在Elasticsearch的文档中看过如下词汇:
NRT: 近实时(Near Realtime),当一个文档保存至index,短暂的延迟后就可以被搜索。
Node: 指单个实例,存储文档并参与所在集群的索引和搜索,一台机器可以运行多个实例,每个实例启动时都有自己的唯一标识。
Cluster: 指多个实例组成的集群,集群中的节点有相同的cluster.name(默认为"elasticsearch"),用户可以通过集群对多个节点的所有数据进行索引和搜索。
Index: 索引在Elasticsearch中有两种含义。作为名词,索引可以指文档的集合,作为动词,可以说"对某个文档进行索引",也就是把文档存储到索引。一个index的名称即为其标识,名称必须为小写。如果和RDBMS相比的话,index的概念可能和database比较相似。
Type: 用于对同一个index中的数据进行逻辑分类。例如,有个存储了sns数据的index,这个index中可能存在多个类型,例如用户资料数据、评论数据、聊天数据...
Document: 文档以JSON格式存储,文档中包含多个字段,每个文档都有自己的类型并存储于index中。
Shards: index可以切分成多个shard,每个shard分布到不同的节点上。通过shard可以在存储还是搜索上缓解单个节点的压力。
Replicas: 对shard进行复制,通过副本不仅保证了可用性,也提高了搜索效率。
一个index可以分为多个shard,默认配置下,每个index有5个primary shards和1个副本(也就是5个replica shards),也就是说这个index有10个shards。
为了进一步说明,这里简单说明一下安装过程。
首先需要确认机器上是否已经安装了Java,这里建议使用java 8:
java -versionecho $JAVA_HOME
延伸阅读
- ssh框架 2016-09-30
- 阿里移动安全 [无线安全]玩转无线电——不安全的蓝牙锁 2017-07-26
- 消息队列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 论文笔记【图片目标分割】 2017-07-26
- 词向量-LRWE模型-更好地识别反义词同义词 2017-07-26
- 从栈不平衡问题 理解 calling convention 2017-07-26
- php imagemagick 处理 图片剪切、压缩、合并、插入文本、背景色透明 2017-07-26
- Swift实现JSON转Model - HandyJSON使用讲解 2017-07-26
- 阿里移动安全 Android端恶意锁屏勒索应用分析 2017-07-26
- 集合结合数据结构来看看(二) 2017-07-26