elasticsearch 是一個全文搜索引擎,支持分佈式。搜索速度很是快速。java
本文主要進行了 elasticsearch 的安裝 配置 以及初步的使用功能;git
-- 下載 放到 /data/soft 目錄github
wget https://download.elasticsearch.org/elasticsearch/release/org/elasticsearch/distribution/tar/elasticsearch/2.1.0/elasticsearch-2.1.0.tar.gz
-- 建立用戶 esdemo 密碼 kinmos1234vim
-- 進入 bin 目錄 elasticsearch 啓用 發現報錯 須要安裝jdk瀏覽器
-- 下載 jdk 放到/data/soft 目錄中
加入環境變量
vim /etc/profileapp
JAVA_HOME=/usr/java/jdk1.8.0_60
CLASSPATH=$JAVA_HOME/lib/
PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME CLASSPATHcurl
source /etc/profileelasticsearch
java -version分佈式
再次 /data/soft/elasticsearch-2/bin/elasticsearch
報錯 Exception in thread "main" java.lang.RuntimeException: don't run elasticsearch as root.post
發現 不能使用root用戶去使用 ,修改 elasticsearch-2 的所屬用戶組
chown -R root .
chown -R esdemo .
chgrp -R esdemo .
切換esdemo用戶 su esdemo
修改配置文件 vim /data/soft/elasticsearch-2.1.0/config/elasticsearch.yml
network.host: 192.168.2.55
http.port: 9200
再次開啓 發現成功
/data/soft/elasticsearch-2.1.0/bin/elasticsearch -d 後臺啓動
瀏覽器中訪問 http://192.168.2.55:9200/ 獲得數據
head監控插件安裝
1.https://github.com/mobz/elasticsearch-head下載zip 解壓
2.建立 elasticsearch-2.1.0\plugins\head文件夾
3.將解壓後的elasticsearch-head-master文件夾下的文件copy到head
4.運行es
5.打開
http://192.168.2.55:9200/_plugin/head/
建立索引庫
命令行 curl -XPUT '192.168.2.55:9200/kinmosuser?pretty'
訪問索引庫
http://192.168.2.55:9200/kinmosuser?pretty
監控各個索引庫
http://192.168.2.55:9200/_cat/indices?v
修改索引配置
curl -XPUT '192.168.2.55:9200/kinmosuser/_settings' -d '{"number_of_replicas": 1}'
建立文檔 添加數據
curl -XPUT '192.168.2.55:9200/kinmosuser/user/1' -d ' { "name":"kinmos","age":22,"address":"zhongguo中國","likes":["basketball","music"]}'
安裝中文分詞
下載
cd /data/soft
wget https://github.com/medcl/elasticsearch-analysis-ik/archive/master.zip
解壓
unzip master.zip
cd elasticsearch-analysis-ik-master/
https://github.com/medcl/elasticsearch-rtf 中找到 elasticsearch-analysis-ik-5.1.1.jar
放到 /data/soft/elasticsearch-2.1.0/plugins/analysis-ik 中 並將 elasticsearch-analysis-ik-master 中的文件放到 analysis-ik 中
而後編輯配置文件elasticsearch.yml ,在後面加一行:
index.analysis.analyzer.ik.type : "ik"
ik設置
修改config/IKAnalyzer.cfg.xml
<entry key="ext_dict">custom/mydict.dic;custom/single_word_low_freq.dic;custom/sougou.dic</entry>
增長:custom/sougou.dic 分詞庫
====================操做================================
建立 kinmosuser 索引
curl -XPUT 'http://192.168.2.55:9200/kinmosuser?pretty'
也能夠設置的方式建立:
curl -XPUT 'http://192.168.2.55:9200/kinmosuser/' -d '
「settings」:{
「number_of_shards」:3,
「number_of_replicas」:2
}
}'
//刪除索引
curl -XDELETE 'http://192.168.2.55:9200/kinmosuser'
索引建立API能夠接受一個或者一組映射選項
curl -XPOST localhost:9200/test -d ‘{
「settings」:{
「number_of_shards」:3
},
「mappings」:{
「type1」:{
「_source」:{「enabled」:false},
「preperties」:{
「field1」:{
「type」:」string」,
」index」:」not_analyzed」
}
}
}
}
}’
1. create:
指定 ID 來創建新記錄。 (貌似PUT, POST均可以)
$ curl -XPOST localhost:9200/films/md/2 -d '
{ "name":"hei yi ren", "tag": "good"}'
返回:
{
"ok" : true,
"_index" : "twitter",
"_type" : "tweet",
"_id" : "1"
}
也能夠使用自動生成的 ID 創建新紀錄:
$ curl -XPOST localhost:9200/films/md -d '
{"id":"1", "name":"ma da jia si jia3", "tag": "good"}'
每個被索引的文檔都會有一個版本號,被關聯的版本號會做爲index API的請求的響應信息一部分返回回來。所以,咱們能夠在對索引操做的時候,指定特定的版本號,操做對應版本的文檔。例如
curl -XPUT ‘localhost:9200/twitter/tweet/1?version=2’ -d ‘{
「message」:」elasticsearch now has versioning support,double cool!」
}’
另外的一種create方式
curl -XPUT ‘http://localhost:9200/twitter/tweet/1/_create’ -d ‘{
「user」:」kimchy」,
「post_date」:」2009-11-11T14:12:12」,
「message」:」hello,world」
}’
2. 查詢:
2.1 查詢全部的 index, type:
$ curl localhost:9200/_search?pretty=true
2.2 查詢某個index下全部的type:
$ curl http://192.168.2.55:9200/kinmosuser/_search
2.3 查詢某個index 下, 某個 type下全部的記錄:
$ curl 'http://192.168.2.55:9200/kinmosuser/user/_search?pretty=true'
2.4 帶有參數的查詢:
$ curl localhost:9200/films/md/_search?q=tag:good
結果:
{"took":7,"timed_out":false,"_shards":{"total":5,"successful":5,"failed":0},"hits":{"total":2,"max_score":1.0,"hits":[{"_index":"film","_type":"md","_id":"2","_score":1.0, "_source" :
{ "name":"hei yi ren", "tag": "good"}},{"_index":"film","_type":"md","_id":"1","_score":0.30685282, "_source" :
{ "name":"ma da jia si jia", "tag": "good"}}]}}
http://10.70.40.250:9200/dl_pro_product/product/_search?q=first:zhuang1444
2.5 使用JSON參數的查詢: (注意 query 和 term 關鍵字)
$ curl localhost:9200/film/_search -d '
{"query" : { "term": { "tag":"bad"}}}'
3. update
$ curl -XPUT localhost:9200/films/md/1 -d { ...(data)... }
4. 刪除。 刪除全部的:
$ curl -XDELETE localhost:9200/films
http://10.70.40.250:9200/dl_pro_product/product/_analyze?field=af_productname&pretty=true
transaction log
每一個分片都有一個關聯的事務日誌文件或者預寫日誌文件,用來保證索引的寫和刪除是原子操做,你不須要顯式的去提交每一個請求(對應於lucene的commit),Flush(「commit」)的觸發基於如下幾個參數:
配置
說明
index.translog.flush_threshold_ops
設置當累計操做達到多少時就執行flush操做,默認值 5000.
index.translog.flush_threshold_size
一旦你的事務日誌文件的大小(translog)達到設置的這個值,則開始執行flush操做,默認值 200mb.
index.translog.flush_threshold_period每隔多長時間執行一次flush,默認 30m.注意:這些參數能夠在運行時使用索引設置更新API來更新。(例如,當在執行批量更新時,這些數字須要加大,以支持更高的TPS)每一個碎片都有一個事務日誌文件,事務日誌文件主要是爲了保證索引寫和刪除過程的可靠性,你不須要顯式的去提交每一個請求(對應於lucene的commit),這一切都是自動的,你也能夠顯式的執行flush操做來進行請求的提交,還能夠使用下面這些參數來進行控制:配置 說明index.translog.flush_threshold_ops 設置當累計操做達到多少時就執行flush操做,默認值 5000.index.translog.flush_threshold_size 一旦你的事務日誌文件的大小(translog)達到設置的這個值,則開始執行flush操做,默認值500mb.index.translog.flush_threshold_period 每隔多長時間執行一次flush,默認 60m.