Elasticsearch 基础入门
原文地址:Elasticsearch 基礎(chǔ)入門
博客地址:http://www.extlight.com
一、什么是 ElasticSearch
ElasticSearch是一個基于 Lucene 的搜索服務(wù)器。它提供了一個分布式多用戶能力的全文搜索引擎,基于 RESTful web 接口。Elasticsearch 是用 Java 開發(fā)的,并作為 Apache 許可條款下的開放源碼發(fā)布,是當(dāng)前流行的企業(yè)級搜索引擎。設(shè)計用于云計算中,能夠達(dá)到實時搜索,穩(wěn)定,可靠,快速,安裝使用方便。
1.1 基礎(chǔ)概念
索引:含有相同屬性的文檔集合
類型:索引可以定義一個或多個類型,文檔必須屬于一個類型
文檔:可以被索引的基礎(chǔ)數(shù)據(jù)單位
分片:每個索引都有多個分片,每個分片都是 Lucene 索引
備份:拷貝一份分片就完成分片的備份
形象比喻:
百貨大樓里有各式各樣的商品,例如書籍、筆、水果等。書籍可以根據(jù)內(nèi)容劃分成不同種類,如科技類、教育類、懸疑推理等。懸疑推理類的小說中比較有名氣的有《福爾摩斯探案集》、《白夜行》等。
百貨大樓 --> ElasticSearch 數(shù)據(jù)庫
書籍 --> 索引
懸疑推理 --> 類型
白夜行 --> 文檔
1.2 應(yīng)用場景
- 海量數(shù)據(jù)分析引擎
- 站內(nèi)搜索引擎
- 數(shù)據(jù)倉庫
二、安裝和配置
本次測試使用一臺 ip 為 192.168.2.41 的虛擬機(Centos7),建議使用 7.x 版本,筆者之前使用 6.x 啟動服務(wù)時報出各種錯誤
2.1 依賴環(huán)境
JDK 和 NodeJS
2.2 下載
登陸 elasticSearch 官網(wǎng)下載文件。
2.3 安裝
tar -zxvf elasticsearch-5.6.1.tar.gz -C /usrcd elasticsearch-5.6.1elasticsearch 文件目錄如下圖:
2.4 啟動
踩坑提醒 1:
因為 Elasticsearch 可以執(zhí)行腳本文件,為了安全性,默認(rèn)不允許通過 root 用戶啟動服務(wù)。我們需要新創(chuàng)建用戶名和用戶組啟動服務(wù)
#增加 es 組 groupadd es #增加 es 用戶并附加到 es 組 useradd es -g es -p es #給目錄權(quán)限 chown -R es:es elasticsearch-5.6.1 #使用es用戶 su es踩坑提醒 2:
默認(rèn)情況下,Elasticsearch 只允許本機訪問,如果需要遠(yuǎn)程訪問,需要修改其配置文件
vim config/elasticsearch.yml # 去掉 network.host 前邊的注釋,將它的值改成0.0.0.0 network.host: 0.0.0.0踩坑提醒 3:
在啟動過程中,Centos 環(huán)境下可能還會報錯,具體解決方案請參照文章末尾提供的資料
啟動服務(wù)
bin/elasticsearch通過瀏覽器訪問 http://192.168.2.41:9200 ,當(dāng)出現(xiàn)如下內(nèi)容說明啟動成功:
{"name" : "OwUwJe-","cluster_name" : "elasticsearch","cluster_uuid" : "vanzxnpaRumdRKiYic3f5A","version" : {"number" : "5.6.1","build_hash" : "667b497","build_date" : "2017-09-14T19:22:05.189Z","build_snapshot" : false,"lucene_version" : "6.6.1"},"tagline" : "You Know, for Search" }2.5 安裝插件
訪問 http://192.168.2.41:9200 查看內(nèi)容顯示效果不友好,因此,我們需要安裝一個名為 elasticsearch-head 的插件,讓內(nèi)容顯示效果比較舒適。
登陸 GitHub 網(wǎng)站,搜索 mobz/elasticsearch-head ,將其下載到本地。
wget https://github.com/mobz/elasticsearch-head/archive/master.zipunzip master.zipcd elasticsearch-head-masternpm installnpm run start通過上述命令的操作,我們已經(jīng)安裝好 elasticsearch-head 插件。通過瀏覽器訪問 http://192.168.2.41:9100,如下圖:
圖中我們發(fā)現(xiàn) elasticsearch-head 插件和 Elasticsearch 服務(wù)并沒有建立連接,所以我們還需要修改 Elasticsearch 的配置文件:
cd elasticsearch-5.6.1vim config/elasticsearch.yml# 在文件末尾添加 2 段配置http.cors.enabled: true http.cors.allow-origin: "*"保存文件后,分別起來 2 個程序:
cd elasticsearch-5.6.1# 后臺啟動 elasticSearch 服務(wù) bin/elasticsearch -dcd elasticsearch-head-masternpm run start通過瀏覽器訪問 http://192.168.2.41:9100,如下圖:
通過插件創(chuàng)建索引
查看索引基本情況
該插件能直接對 Elasticsearch 的數(shù)據(jù)進(jìn)行增刪改查,因此存在安全性的問題。建議生產(chǎn)環(huán)境下不要使用該插件!
三、使用
Elasticsearch 支持 RESTFUL 風(fēng)格 API,其 API 基本格式如下:
http://<ip>:<port>/<索引>/<類型>/<文檔id>3.1 創(chuàng)建/刪除索引
為了方便測試,我們使用 POSTMAN 工具進(jìn)行接口的請求。
創(chuàng)建一個非結(jié)構(gòu)化的索引,需要使用 PUT 請求。例如創(chuàng)建一個名為 book 的索引。
執(zhí)行:
[PUT] http://192.168.2.41:9200/book返回結(jié)果:
{"acknowledged": true,"shards_acknowledged": true,"index": "book" }創(chuàng)建一個結(jié)構(gòu)化的索引,如下圖:
刪除一個索引,需要使用 DELETE 請求。
執(zhí)行:
[DELETE] http://192.168.2.41:9200/book返回結(jié)果:
{"acknowledged": true }3.2 插入數(shù)據(jù)
插入指定 ID 的數(shù)據(jù),需要使用 PUT 請求。如下圖:
插入不指定 ID 的數(shù)據(jù),需要使用 POST 請求。如下圖:
3.3 修改數(shù)據(jù)
修改數(shù)據(jù),需要使用 POST 請求,且 URL 需要添加 _update
執(zhí)行:
[POST] http://192.168.2.41:9200/fruit/apple/1/_update請求參數(shù)(修改顏色):
{"doc": {"color": "black"} }返回結(jié)果:
{"_index": "fruit","_type": "apple","_id": "1","_version": 7,"result": "updated","_shards": {"total": 2,"successful": 1,"failed": 0} }3.4 刪除數(shù)據(jù)
修改數(shù)據(jù),需要使用 DELETE 請求。
執(zhí)行:
[DELETE] http://192.168.2.41:9200/fruit/apple/1返回結(jié)果:
{"found": true,"_index": "fruit","_type": "apple","_id": "1","_version": 8,"result": "deleted","_shards": {"total": 2,"successful": 1,"failed": 0} }3.5 查找數(shù)據(jù)
查詢指定ID的數(shù)據(jù),需要使用 GET 請求。
執(zhí)行:
[GET] http://192.168.2.41:9200/fruit/apple/AV69_4DDdZbC-YBdV-U3返回結(jié)果:
{"_index": "fruit","_type": "apple","_id": "AV69_4DDdZbC-YBdV-U3","_version": 1,"found": true,"_source": {"color": "green","weight": 1,"createTime": "2017-09-26 19:05:26"} }條件查詢,需要使用 POST 請求。
執(zhí)行:
[POST] http://192.168.2.41:9200/fruit/apple/_search請求參數(shù)(查找 color = "green"):
{"query": {"match":{"color": "green"}} }返回結(jié)果:
{"took": 8,"timed_out": false,"_shards": {"total": 5,"successful": 5,"skipped": 0,"failed": 0},"hits": {"total": 1,"max_score": 0.2876821,"hits": [{"_index": "fruit","_type": "apple","_id": "AV69_4DDdZbC-YBdV-U3","_score": 0.2876821,"_source": {"color": "green","weight": 1,"createTime": "2017-09-26 19:05:26"}}]} }參考資料
- http://blog.csdn.net/qq942477618/article/details/53414983 解決問題方案
- http://blog.csdn.net/laotoumo/article/details/53890279 解決問題方案
- http://blog.csdn.net/jiankunking/article/details/65448030 解決問題方案
- http://www.ruanyifeng.com/blog/2017/08/elasticsearch.html
- http://www.cnblogs.com/ghj1976/p/5293250.html
轉(zhuǎn)載于:https://www.cnblogs.com/moonlightL/p/7600900.html
總結(jié)
以上是生活随笔為你收集整理的Elasticsearch 基础入门的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: shell文件管理jenkins构建过程
- 下一篇: java : enum、创建文件和文件夹