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
  • 1

解压elasticsearch-5.5.0.zip(需要服务器上已经安装了unzip)

unzip elasticsearch-5.5.0.zip
  • 1

我比较喜欢吧东西放在一起,所以移动一下东西

mv elasticsearch-5.5.0 /data/home/es/lcoal
  • 1

因为elasticsearch这东西是开箱即用的,进入并目录下

cd elasticsearch-5.5.0/bin
./elasticsearch
  • 1
  • 2

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

这里写图片描述

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

这里写图片描述

进入config目录下

cd elasticsearch-5.5.0/config
  • 1

修改jvm.options文件

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

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

这里写图片描述

意思是说不能在root用户下启动,这个时候就需要新建一个用户,好像是elasticsearch为了什么安全什么。

    groupadd testes
    useradd testes -g elasticsearch  
    chown -R testes:elasticsearch elasticsearch-5.5.0/ 
  • 1
  • 2
  • 3

添加用户的网上教程很多,这里简单解释一下 
创建用户组elasticsearch 
创建用户testes属于elasticsearch组 
把elasticsearch-5.5.0/ 授权给用户testes

然后切换到用户testes下,进入bin目录启动服务,如果成功就成功,但是应该还是会报错滴

su testes 
cd elasticsearch-5.5.0/bin
./elasticsearch
  • 1
  • 2
  • 3

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

这里写图片描述

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

切换到root用户下

vi /etc/security/limits.conf
  • 1

在最后添加下面内容,已经有了的话就覆盖

* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
  • 1
  • 2
  • 3
  • 4

然后

vi /etc/security/limits.d/90-nproc.conf 
  • 1
修改如下内容:
* soft nproc 1024

#修改为
* soft nproc 2048
  • 1
  • 2
  • 3
  • 4
  • 5

vi /etc/sysctl.conf 
  • 1

添加

vm.max_map_count=655360
  • 1

最后

sysctl -p
  • 1

把上面的流程走一遍,基本上就没什么问题了。 
重新进入到并目录下启动下服务应该就可以了。记得切换到非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
  • 1
  • 2

因为Centos6不支持SecComp,而ES5.2.1默认bootstrap.system_call_filter为true进行检测,所以导致检测失败,失败后直接导致ES不能启动。

进入elasticsearch.yml目录下,找到这个注释,然后改成

bootstrap.memory_lock: false
bootstrap.system_call_filter: false
  • 1
  • 2

然后应该就可以了。

顺便说一下,-d表示在后台启动服务,要不然当前窗口关闭之后服务就停掉了

./elasticsearch -d
  • 1

输入下面命令行检查是否真的成功启动

curl localhost:9200
  • 1

如果得到下面的东西,就说明服务启动成功了

{
  "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"
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

查看服务是否正常启动

ps -ef | grep ela 
  • 1

这里写图片描述

这样就是成功启动服务的样子,如果要结束,就把这个进程kill掉就好了。

这个时候可以用外网访问以下9200端口,得到的东西和下面相同就成功了,但是应该还是不可以的,哈哈哈。惊不惊喜,意不意外。

这里写图片描述

进入config目录,修改elasticsearch.yml

#network.host: 192.168.0.1
改成
network.host: 0.0.0.0
  • 1
  • 2
  • 3

这个时候在sense输入最上面输入公网IP号和9200端口:

106.14.112.215:9200
  • 1

这个时候应该就可以访问了,如果还不行,拿去阿里云配置一下安全组规则,把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"]
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

会在右边看到这个东西说明索引创建成功,索引为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
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

查找索引信息

GET /_search   #搜索全部
  • 1

得到

{
   "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"
               ]
            }
         }
      ]
   }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值