初识
A Distributed RESTful Search Engine
它能让你以一个之前从未有过的速度和规模,去探索你的数据
"A Distributed RESTful Search Engine" 翻译过来就是一个分布式Restful搜索引擎,这句话基本能大致概括Elasticsearch。
如果稍微详细一点呢:
- 搜索引擎
首先,它是一个搜索引擎:Elastic 的底层是开源库 Lucene,Lucene 可以说是当下最先进、高性能、全功能的搜索引擎库
- 使用简单
它使全文检索变得简单,通过隐藏 Lucene 的复杂性,取而代之的提供一套简单一致的 RESTful API,用户可以使用curl(get put post delete方法)来操作数据,同时可以很轻松的使用各种语言的客户端封装库来操作数据(Elastic使用json作为数据载体,所以你完全可以使用http+json库来封装客户端来访问Elasticsearch服务)
- 分布式
一个分布式实时分析搜索引擎,分布式意味着计算更快,存储容量更大:能胜任上百个服务节点的扩展,并支持 PB 级别的结构化或者非结构化数据
一些概念帮助理解
node、cluster(集群)
Elastic 本质上是一个分布式数据库,允许多台服务器协同工作,每台服务器可以运行多个 Elastic 实例。
单个 Elastic 实例称为一个节点(node)。一组节点构成一个集群(cluster)。
index(索引)
Elastic 会索引所有字段,经过处理后写入一个反向索引(Inverted Index)。查找数据的时候,直接查找该索引。
所以,Elastic 数据管理的顶层单位就叫做 Index(索引)。它是单个数据库的同义词。每个 Index (即数据库)的名字必须是小写。
type(类型)
可以理解为java中的class,标识一中类型,每个类型中有相应的字段。
document(文档)
Index 里面单条的记录称为 Document(文档)。许多条 Document 构成了一个 Index。可以理解为上面type的实例化,一个类型下面有很多document对象。
document使用json格式表示,例如如下:
{
"id": 0,
"title": "elasticsearch教程",
"content": "这是一篇关于elasticsearch的教程,******",
"url":"http://kooola.com/article/elasticsearch-install"
}
安装
下载安装
$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.1.zip
$ unzip elasticsearch-5.5.1.zip
$ cd elasticsearch-5.5.1/
运行
./bin/elasticsearch
此时运行可能报如下错误(报错原因是elasticsearch考虑安全问题默认不允许root用户运行):
org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root
解决方法:创建linux新用户,使用新用户运行elasticsearch
创建用户组与用户
groupadd elasticsearch
useradd elasticsearch -g elasticsearch -p 123456
设置文件夹、文件所属
chown -R elasticsearch:elasticsearch elasticsearch
切换用户再运行elasticsearch
su elsearch
./elasticsearch
Tips:安装运行elasticsearch前请确保java版本是1.8及以上,不然会报如下错误
Error: Could not find or load main class org.elasticsearch.tools.JavaVersionChecker
Elasticsearch requires at least Java 8 but your Java version from **** does not meet this requirement
注意:这里最好把elasticsearch的目录放到用户目录下(也就是放到/home/elasticsearch),不然可能报错
检查
打开浏览器,输入http://localhost:9200,能看到类似如下信息则表明elasticsearch服务启动成功
{
"name" : "11IPkfD",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "k3fSrdjvSCSpUr42iZ2jHw",
"version" : {
"number" : "5.5.1",
"build_hash" : "19c13d0",
"build_date" : "2017-07-18T20:44:24.823Z",
"build_snapshot" : false,
"lucene_version" : "6.6.0"
},
"tagline" : "You Know, for Search"
}
欢迎关注公众号,一起聊聊大数据。