Elasticsearch是一个基于Apache Lucene(TM)的开源搜索引擎。无论在开源还是专有领域,Lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。
但是,Lucene只是一个库。想要使用它,你必须使用Java来作为开发语言并将其直接集成到你的应用中,更糟糕的是,Lucene非常复杂,你需要深入了解检索的相关知识来理解它是如何工作的。
Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。
不过,Elasticsearch不仅仅是Lucene和全文搜索,我们还能这样去描述它:
而且,所有的这些功能被集成到一个服务里面,你的应用可以通过简单的RESTful API、各种语言的客户端甚至命令行与之交互。
上手Elasticsearch非常容易。它提供了许多合理的缺省值,并对初学者隐藏了复杂的搜索引擎理论。它开箱即用(安装即可使用),只需很少的学习既可在生产环境中使用。
ElasticSearch主要是放在服务器上使用的,在服务器上放一个搜索服务器之后,并可通过类似json的schema进行访问了;
http://www.yiibai.com/elasticsearch/elasticsearch_index_apis.html
这个上面是关于这个语句的相关介绍,可以先去了解了解这个。感觉不看也是可以的,毕竟是类似json的,还是很容易看的懂得
如果使用Chrome浏览器的,可以安装一下sense这个插件,这个是为了es特地开发的一个插件,还是很好用的。直接在谷歌网上应用店直接搜索安装就好了。es还自己提供了一个head插件,也挺好用的,待会介绍。
elasticsearch主要还是基于linux命令的一个服务器,虽然在window下也可以本地用,但是会出现一下乱七八糟的问题。我是基于阿里云CentOS 7.2 64位的,jdk1.8。话不多说,开始吧。
下载elasticsearch-5.5.0.zip
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.0.zip
解压elasticsearch-5.5.0.zip(需要服务器上已经安装了unzip)
unzip elasticsearch-5.5.0.zip
我比较喜欢吧东西放在一起,所以移动一下东西
mv elasticsearch-5.5.0 /data/home/es/lcoal
因为elasticsearch这东西是开箱即用的,进入并目录下
cd elasticsearch-5.5.0/bin
./elasticsearch
如果出现下面这个东西就成功启动(我这里配置了一些其他的东西,反正长得差不多就好了)
如果出现下面的错误,就说明你的服务器的内存不足(显然不足的可能性是比较大的,因为默认要求是2g的内存,作为大学生租的内存只有一共2G)
进入config目录下
cd elasticsearch-5.5.0/config
修改jvm.options文件
vi jvm.options
-Xms2g 变成这样--------------> -Xms512m
-Xmx2g 变成这样--------------> -Xms512m
这样就可以把内存变成512M了,重新进去bin目录下去启动服务
如果成功了就启动成功了,如果出现的是
意思是说不能在root用户下启动,这个时候就需要新建一个用户,好像是elasticsearch为了什么安全什么。
groupadd testes
useradd testes -g elasticsearch
chown -R testes:elasticsearch elasticsearch-5.5.0/
添加用户的网上教程很多,这里简单解释一下
创建用户组elasticsearch
创建用户testes属于elasticsearch组
把elasticsearch-5.5.0/ 授权给用户testes
然后切换到用户testes下,进入bin目录启动服务,如果成功就成功,但是应该还是会报错滴
su testes
cd elasticsearch-5.5.0/bin
./elasticsearch
你以为会成功,嘿嘿嘿,想得美,反正我出现了下面这个:
这个是为什么呢,我也不知道,查了一下资料,这么做是可以的。
切换到root用户下
vi /etc/security/limits.conf
在最后添加下面内容,已经有了的话就覆盖
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
然后
vi /etc/security/limits.d/90-nproc.conf
修改如下内容:
* soft nproc 1024
#修改为
* soft nproc 2048
再
vi /etc/sysctl.conf
添加
vm.max_map_count=655360
最后
sysctl -p
把上面的流程走一遍,基本上就没什么问题了。
重新进入到并目录下启动下服务应该就可以了。记得切换到非root用户下;
如果是在Centos6下启动的服务,可能会出现这个错误:
ERROR: bootstrap checks failed
system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk
因为Centos6不支持SecComp,而ES5.2.1默认bootstrap.system_call_filter为true进行检测,所以导致检测失败,失败后直接导致ES不能启动。
进入elasticsearch.yml目录下,找到这个注释,然后改成
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
然后应该就可以了。
顺便说一下,-d表示在后台启动服务,要不然当前窗口关闭之后服务就停掉了
./elasticsearch -d
输入下面命令行检查是否真的成功启动
curl localhost:9200
如果得到下面的东西,就说明服务启动成功了
{
"name" : "D5XPIZy",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "ChxVh9fESbCcgJ03z3MDpQ",
"version" : {
"number" : "5.5.0",
"build_hash" : "260387d",
"build_date" : "2017-06-30T23:16:05.735Z",
"build_snapshot" : false,
"lucene_version" : "6.6.0"
},
"tagline" : "You Know, for Search"
}
查看服务是否正常启动
ps -ef | grep ela
这样就是成功启动服务的样子,如果要结束,就把这个进程kill掉就好了。
这个时候可以用外网访问以下9200端口,得到的东西和下面相同就成功了,但是应该还是不可以的,哈哈哈。惊不惊喜,意不意外。
进入config目录,修改elasticsearch.yml
#network.host: 192.168.0.1
改成
network.host: 0.0.0.0
这个时候在sense输入最上面输入公网IP号和9200端口:
106.14.112.215:9200
这个时候应该就可以访问了,如果还不行,拿去阿里云配置一下安全组规则,把9200端口打开试一下,如果还不行,那就再去百度谷歌一下吧。
到这基本上elasticsearch就安装好了。
添加一个索引信息,索引为movies,类型为movie,ID为1
title,director,year,genres为索引的内容
PUT /movies/movie/1
{
"title": "The Godfather",
"director": "Francis Ford Coppola",
"year": 1972,
"genres": ["Crime", "Drama"]
}
会在右边看到这个东西说明索引创建成功,索引为movies,类型为movie,id为1.版本号为1,因为是首次创建,所以result为created
{
"_index": "movies",
"_type": "movie",
"_id": "1",
"_version": 1,
"result": "created",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"created": true
}
查找索引信息
GET /_search #搜索全部
得到
{
"took": 3,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 1,
"max_score": 1,
"hits": [
{
"_index": "movies",
"_type": "movie",
"_id": "1",
"_score": 1,
"_source": {
"title": "The Godfather",
"director": "Francis Ford Coppola",
"year": 1972,
"genres": [
"Crime",
"Drama"
]
}
}
]
}
}
刚刚添加的索引信息被搜索出来了。