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

如果出現下面這個東西就成功啓動(我這裏配置了一些其他的東西,反正長得差不多就好了)

這裏寫圖片描述

如果出現下面的錯誤,就說明你的服務器的內存不足(顯然不足的可能性是比較大的,因爲默認要求是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"
               ]
            }
         }
      ]
   }
}

剛剛添加的索引信息被搜索出來了。

發佈了33 篇原創文章 · 獲贊 17 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章