ElasticSearch学习笔记(一)ElasticSearch安装

一、简介

Elasticsearch是一个基于Apache Lucene(TM)的开源搜索引擎。无论在开源还是专有领域,Lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。

但是,Lucene只是一个库。想要使用它,你必须使用Java来作为开发语言并将其直接集成到你的应用中,更糟糕的是,Lucene非常复杂,你需要深入了解检索的相关知识来理解它是如何工作的。

Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。

不过,Elasticsearch不仅仅是Lucene和全文搜索,我们还能这样去描述它:

  • 分布式的实时文件存储,每个字段都被索引并可被搜索
  • 分布式的实时分析搜索引擎
  • 可以扩展到上百台服务器,处理PB级结构化或非结构化数据

而且,所有的这些功能被集成到一个服务里面,你的应用可以通过简单的RESTful API、各种语言的客户端甚至命令行与之交互。

上手Elasticsearch非常容易。它提供了许多合理的缺省值,并对初学者隐藏了复杂的搜索引擎理论。它开箱即用(安装即可使用),只需很少的学习既可在生产环境中使用。

ElasticSearch主要是放在服务器上使用的,在服务器上放一个搜索服务器之后,并可通过类似json的schema进行访问了;

http://www.yiibai.com/elasticsearch/elasticsearch_index_apis.html
这个上面是关于这个语句的相关介绍,可以先去了解了解这个。感觉不看也是可以的,毕竟是类似json的,还是很容易看的懂得

二、chrome插件Sense

如果使用Chrome浏览器的,可以安装一下sense这个插件,这个是为了es特地开发的一个插件,还是很好用的。直接在谷歌网上应用店直接搜索安装就好了。es还自己提供了一个head插件,也挺好用的,待会介绍。

三、安装es5.5.0(目前最新)

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

如果出现下面这个东西就成功启动(我这里配置了一些其他的东西,反正长得差不多就好了)

ElasticSearch学习笔记(一)ElasticSearch安装_第1张图片

如果出现下面的错误,就说明你的服务器的内存不足(显然不足的可能性是比较大的,因为默认要求是2g的内存,作为大学生租的内存只有一共2G)

ElasticSearch学习笔记(一)ElasticSearch安装_第2张图片

进入config目录下

cd elasticsearch-5.5.0/config

修改jvm.options文件

vi jvm.options 
-Xms2g      变成这样-------------->     -Xms512m
-Xmx2g      变成这样-------------->     -Xms512m

这样就可以把内存变成512M了,重新进去bin目录下去启动服务
如果成功了就启动成功了,如果出现的是

ElasticSearch学习笔记(一)ElasticSearch安装_第3张图片

意思是说不能在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

你以为会成功,嘿嘿嘿,想得美,反正我出现了下面这个:

ElasticSearch学习笔记(一)ElasticSearch安装_第4张图片

这个是为什么呢,我也不知道,查了一下资料,这么做是可以的。

切换到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端口,得到的东西和下面相同就成功了,但是应该还是不可以的,哈哈哈。惊不惊喜,意不意外。

ElasticSearch学习笔记(一)ElasticSearch安装_第5张图片

进入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"
               ]
            }
         }
      ]
   }
}

刚刚添加的索引信息被搜索出来了。

你可能感兴趣的:(elasticsearch)