本文將分為三大部分來講es相關(guān)的基礎(chǔ)知識點
一泌参、ElasticSearch 基礎(chǔ)概念和組成部分
? ? ? ? ?1)ElasticSearch概念一句話總結(jié):
? ? ? ? ES是一個基于Lucene并采用Restful API 標(biāo)準(zhǔn)的高可擴(kuò)展性和高可用性的實時數(shù)據(jù)分析的全文檢索工具
? ? ? ? ?2)ElasticSearch涉及到的一些概念:
? ? ? ? NRT(準(zhǔn)實時): Elasticsearch是一個接近實時的搜索平臺乖阵。這意味著,從索引一個文檔直到這 ? ? 個文檔能夠被搜索到有一個輕微的延遲(通常是1秒)
? ? ? ? ? Node(節(jié)點):單個的裝有ElasticSearch服務(wù)并且提供故障轉(zhuǎn)移和擴(kuò)展的服務(wù)器
? ? ? ? ? Cluster(集群):一個集群就是由一個或多個Node組織在一起共同工作讨永,共同分享整個數(shù)據(jù)具有負(fù)載均衡功能的集群,集群名稱是唯一標(biāo)識,因為一個節(jié)點只能通過指定某個集群的名字遇革,來加入這個集群
? ? ? ? ? ? Document(文檔):一個文檔是一個可以被索引的基礎(chǔ)信息單元
? ? ? ? ? ? Index(索引):索引就是一個擁有幾分相似特征的文檔的集合
? ? ? ? ? ? Type(類型):一個索引中卿闹,你可以定義一種或者多種類型
? ? ? ? ? ? Field(列):Field是ElasticSearch中最小單位揭糕,相當(dāng)于數(shù)據(jù)的某一列
? ? ? ? ? ? Shards(分片):一個索引可以存儲超出單個結(jié)點硬件限制的大量數(shù)據(jù)。比如锻霎,一個具有10億文檔的索引占據(jù)1TB的磁盤空間著角,而任一節(jié)點都沒有這樣大的磁盤空間;或者單個節(jié)點處理搜索請求旋恼,響應(yīng)太慢吏口。因此ElasticSearch將索引分成若干份,每個部分就是一個shard 冰更,當(dāng)你創(chuàng)建一個索引的時候产徊,你可以指定你想要的分片的數(shù)量。每個分片本身也是一個功能完善并且獨立的“索引”蜀细,這個“索引”可以被放置到集群中的任何節(jié)點上舟铜。 分片好處就是可以對數(shù)據(jù)進(jìn)行水平分割,擴(kuò)展內(nèi)容容量审葬,提高查詢性能和吞吐量
? ? ? ? ? ? Replicas(復(fù)制):Replicas是索引的一份或者多份拷貝 提供高可用
? ? ? ? ? ?分片和復(fù)制的數(shù)量可以在索引創(chuàng)建的時候指定深滚。在索引創(chuàng)建之后,你可以在任何時候動態(tài)地改變復(fù)制數(shù)量涣觉,但是不能改變分片的數(shù)量痴荐。
? ? ? ? ?3)Es跟關(guān)系型數(shù)據(jù)庫對照如下圖:
? ? ? ? ?4) ElasticSearch架構(gòu)圖如下:
二、ElastSearch 簡單安裝
? ? ? ? ?1)ElasticSearch安裝:
? ? ? ? ? ? ? ? ES最佳實踐安裝方法就是下載壓縮包直接解壓?官網(wǎng)地址:https://www.elastic.co/
? ? ? ? ? ? ? ? 1)安裝ES首先需要安裝jdk官册,必須是1.7以上的版本生兆。
? ? ? ? ? ? ? ? [root@localhost ~]# yum -y install java-1.8.0-openjdk*?
? ? ? ? ? ? ? ? 2)下載壓縮包到下載目錄下
? ? ? ? ? ? ? ? ?[root@localhost ~] # cd? /opt/elasticsearch && wget https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/tar/elasticsearch/2.3.5/elasticsearch-2.3.5.tar.gz
? ? ? ? ? ? ? ? [root@localhost elasticsearch]# tar zxvf elasticsearch-2.3.5.tar.gz
? ? ? ? ? ? ? ? 3)創(chuàng)建ES安裝目錄 將解壓后的東西移動到安裝目錄
? ? ? ? ? ? ? ? ? [root@localhost elasticsearch]# cd ?elasticsearch-2.3.5
? ? ? ? ? ? ? ? ? [root@localhost elasticsearch-2.3.5]#? mkdir /usr/local/elasticsearch
? ? ? ? ? ? ? ? ? [root@localhost elasticsearch-2.3.5]#? mv * /usr/local/elasticsearch
? ? ? ? ? ? ? ? ? [root@localhost elasticsearch-2.3.5]#? cd /usr/local/elasticsearch/bin/
? ? ? ? ? ? ? ? ? [root@localhost bin]# ?./elasticsearch
? ? ? ? ? ? ? ? ? Exceptioninthread"main"java.lang.RuntimeException:don'trunelasticsearchasroot.
? ? ? ? ? ? ? ? ? atorg.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:93)
? ? ? ? ? ? ? ? ? atorg.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:144)
? ? ? ? ? ? ? ? ? atorg.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:270)
? ? ? ? ? ? ? ? ?atorg.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:35)
? ? ? ? ? ? ? ? ?Refertothelogforcompleteerrordetails.
? ? ? ? ? ? ? ?報錯,提示不能用root用戶運行膝宁。
? ? ? ? ? ? ? ? vim編輯elasticsearch鸦难,添加ES_JAVA_OPTS="-Des.insecure.allow.root=true"
? ? ? ? ? ? ? ?我添加在了注釋說明下面,一定在變量ES_JAVA_OPTS使用前添加员淫。
? ? ? ? ? ? ? ?再次運行./elasticsearch
? ? ? ? ? ? ? ??[root@localhost bin]# ./elasticsearch? ? ? ?
?[2016-08-2016:11:52,021][WARN][bootstrap]runningasROOTuser.thisisabadidea!
?[2016-08-2016:11:52,034][WARN] ? ? ? ? ? ? ? ? ? ? ?[bootstrap]unabletoinstallsyscallfilter:seccompunavailable:requireskernel3.5+withCONFIG_SECCOMPandCONFIG_SECCOMP_FILTERcompiledin
?[2016-08-2016:11:52,431][INFO][node] ? ? ? ? ? ? [JohnnyStorm]version[2.3.5],pid[28122],build[90f439f/2016-07-27T10:36:52Z]
?[2016-08-2016:11:52,431][INFO][node][JohnnyStorm]initializing...
?[2016-08-2016:11:53,390][INFO][plugins][JohnnyStorm]modules[lang-groovy,reindex,lang-expression],plugins[],sites[]
?[2016-08-2016:11:53,474][INFO][env] ? ? ? ? ? ? ? ?[JohnnyStorm]using[1]datapaths,mounts/(/dev/mapper/VolGroup-lv_root),netusable_space[22.3gb],nettotal_space[30.5gb],spins?[possibly],types[ext4]
?[2016-08-2016:11:53,475][INFO][env][JohnnyStorm]heapsize[1007.3mb],compressedordinaryobjectpointers[true]
[2016-08-2016:11:53,475][WARN][env][JohnnyStorm]maxfiledescriptors[65535]forelasticsearchprocesslikelytoolow,considerincreasingtoatleast[65536]
[2016-08-2016:11:55,811][INFO][node][JohnnyStorm]initialized
[2016-08-2016:11:55,811][INFO][node][JohnnyStorm]starting...
[2016-08-2016:11:56,031][INFO][transport][JohnnyStorm]publish_address{127.0.0.1:9300},bound_addresses{127.0.0.1:9300},{[::1]:9300}
[2016-08-2016:11:56,038][INFO][discovery][JohnnyStorm]elasticsearch/VDX23-BvQX-2saLUKUSLww
[2016-08-2016:11:59,138][INFO][cluster.service][JohnnyStorm]new_master{JohnnyStorm}{VDX23-BvQX-2saLUKUSLww}{127.0.0.1}{127.0.0.1:9300},reason:zen-disco-join(elected_as_master,[0]joinsreceived)
[2016-08-2016:11:59,166][INFO][http][JohnnyStorm]publish_address{127.0.0.1:9200},bound_addresses{127.0.0.1:9200},{[::1]:9200}
[2016-08-2016:11:59,166][INFO][node][JohnnyStorm]started
[2016-08-2016:11:59,201][INFO][gateway][JohnnyStorm]recovered[0]indicesintocluster_state
出現(xiàn)上面信息表示已經(jīng)運行成功合蔽,到此正式完成安裝。
外網(wǎng)訪問
上面的提示中有一句:publish_address{127.0.0.1:9200},bound_addresses{127.0.0.1:9200},{[::1]:9200}介返,通過瀏覽器訪問發(fā)現(xiàn)無法訪問拴事。
修改配置文件,
vim /usr/local/elasticsearch/config/elasticsearch.yml
添加或修改:network.host:0.0.0.0圣蝎,表示不限制IP訪問
重啟服務(wù)后瀏覽器就能訪問刃宵。
三、ElasticSearch 插件部分簡介
? ? ? ES安裝插件是非常簡單的 都是一句命令搞定 ?插件一般都是存放在github上面 命令會自動去找相應(yīng)目錄下的源碼 下載并安裝到本地的plugin目錄下 也可以使用下載并解壓
? ? ? 1)安裝分詞[編輯]
wget ?https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v1.9.5/elasticsearch-analysis-ik-1.9.5.zip
mkdir ? /usr/local/elasticsearch/plugin/ik
cp ? elasticsearch-analysis-ik-1.9.5.zip ?/usr/local/elasticsearch/plugin/ik
unzip ? elasticsearch-analysis-ik-1.9.5.zip
4) 驗證 創(chuàng)建索引 創(chuàng)建mapping 添加數(shù)據(jù)
創(chuàng)建索引:curl -X PUT? http://localhost:9200/index
創(chuàng)建mapping:
curl ?-X ?POST ? http: //localhost: 9200/index/fulltext/_mapping-d' {
"fulltext": {
"_all": {
"analyzer": "ik_max_word",
"search_analyzer": "ik_max_word",
"term_vector": "no",
"store": "false"
},
"properties": {
"content": {
"type": "string",
"store": "no",
"term_vector": "with_positions_offsets",
"analyzer": "ik_max_word",
"search_analyzer": "ik_max_word",
"include_in_all": "true",
"boost": 8
}
}
}
}'
插入數(shù)據(jù):
curl ?-X POST http://localhost:9200/index/fulltext/1 -d '{"content":"美國留給伊拉克的是個爛攤子嗎"}'
curl -X ?POST http://localhost:9200/index/fulltext/2 -d '{"content":"公安部:各地校車將享最高路權(quán)"}'
curl -X POST http://localhost:9200/index/fulltext/3 -d '{"content":"中韓漁警沖突調(diào)查:韓警平均每天扣1艘中國漁船"}'
curl ?-X POST http://localhost:9200/index/fulltext/4 -d '{"content":"中國駐洛杉磯領(lǐng)事館遭亞裔男子槍擊嫌犯已自首"}'
查詢數(shù)據(jù)并高亮顯示:
curl ?-X ?POST ?http://localhost:9200/index/fulltext/_search-d'
{
"query":{"term":{"content":"中國"}},
"highlight":{
"pre_tags":["",""], ?//默認(rèn)高亮是em標(biāo)簽
"post_tags":["",""],
"fields":{ "content":{} }
}
}'
結(jié)果:
{ "took":14, "timed_out":false, "_shards":{ "total":5, "successful":5, "failed":0 }, "hits":{ "total":2, "max_score":2, "hits":[ { "_index":"index", "_type":"fulltext", "_id":"4", "_score":2, "_source":{ "content":"中國駐洛杉磯領(lǐng)事館遭亞裔男子槍擊嫌犯已自首" }, "highlight":{ "content":[ "中國駐洛杉磯領(lǐng)事館遭亞裔男子槍擊嫌犯已自首" ] } }, { "_index":"index", "_type":"fulltext", "_id":"3", "_score":2, "_source":{ "content":"中韓漁警沖突調(diào)查:韓警平均每天扣1艘中國漁船" }, "highlight":{ "content":[ "均每天扣1艘中國漁船" ] } } ] } }
? ?2)JDBC插件安裝 該插件主要是同步數(shù)據(jù)用的 后面會有篇幅去詳細(xì)介紹此部分
? ??[root@localhost bin]# ?cd /opt/elasticsearch
? ? [root@localhost elasticsearch]#? wget http://xbib.org/repository/org/xbib/elasticsearch/importer/elasticsearch-jdbc/2.3.4.0/elasticsearch-jdbc-2.3.4.0-dist.zip
? ? [root@localhostelasticsearch]# ?cp elasticsearch-jdbc-2.3.4.0-dist? /usr/local/elasticsearch/elasticsearch-jdbc-2.3.4.0
? 3) head插件安裝 ?下圖摘自網(wǎng)上
? ? [root@localhost bin]# ?./plugin -install mobz/elasticsearch-head
? ? 會根據(jù)配置文件配置的插件存放位置進(jìn)行安裝 打開http://localhost:9200/_plugin/head即可查看
在地址欄輸入es服務(wù)器的ip地址和端口點connect就可以連接到集群徘公。下面是連接后的視圖牲证。這是主界面,在這里可以看到es集群的基本信息(如:節(jié)點情況关面,索引情況)坦袍。
界面的右邊有些按鈕十厢,如:node stats, cluster nodes键闺,這些是直接請求es的相關(guān)狀態(tài)的api寿烟,返回結(jié)果為json,如下圖:
在索引下面有info和action兩個按鈕辛燥。info是可以查看索引的狀態(tài)和mapping的定義筛武。action是對索引進(jìn)行操作,如:添加別名挎塌、刷新徘六、關(guān)閉索引,刪除索引等榴都。
browser瀏覽界面待锈,這個界面可以同時查看多個索引的數(shù)據(jù),也可以查詢指定字段的數(shù)據(jù)嘴高。
Structured Query查詢界面竿音,這個界面可以對某個索引進(jìn)行一些復(fù)雜查詢,如下面這個例子是查詢product索引拴驮,構(gòu)造boolquery春瞬,title字段里查詢“產(chǎn)品”關(guān)鍵詞,price范圍為10到100的記錄套啤。
Any Request任意請求界面宽气,這個界面可以說是個rest的客戶端,可以通過它來對es進(jìn)行一些請求操作或測試api接口潜沦,下面這個例子是把product索引的副本數(shù)設(shè)置為1萄涯,更多的api可以到es官網(wǎng)查詢。
至此 簡單介紹到此完畢 后續(xù)會更加詳細(xì)的介紹其他知識唆鸡,盡情期待涝影。。争占。袄琳。
? ? ??
? ? ??