十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
今天小編給大家分享一下Centos7安裝ElasticSearch實(shí)例分析的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識(shí),所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

1.下載elasticsearch 6.4.1安裝包
2.解壓壓縮包
[root@localhost elasticsearch]# tar -zxvf elasticsearch-6.4.1.tar.gz
3.啟動(dòng)elasticsearch
[root@localhost bin]# ./elasticsearch
以后臺(tái)方式啟動(dòng)
[root@localhost bin]# ./elasticsearch -d
tips:
[root@localhost bin]# ./elasticsearch [2018-09-19t19:46:09,817][warn ][o.e.b.elasticsearchuncaughtexceptionhandler] [] uncaught exception in thread [main] org.elasticsearch.bootstrap.startupexception: java.lang.runtimeexception: can not run elasticsearch as root at org.elasticsearch.bootstrap.elasticsearch.init(elasticsearch.java:140) ~[elasticsearch-6.4.1.jar:6.4.1] at org.elasticsearch.bootstrap.elasticsearch.execute(elasticsearch.java:127) ~[elasticsearch-6.4.1.jar:6.4.1] at org.elasticsearch.cli.environmentawarecommand.execute(environmentawarecommand.java:86) ~[elasticsearch-6.4.1.jar:6.4.1] at org.elasticsearch.cli.command.mainwithouterrorhandling(command.java:124) ~[elasticsearch-cli-6.4.1.jar:6.4.1] at org.elasticsearch.cli.command.main(command.java:90) ~[elasticsearch-cli-6.4.1.jar:6.4.1] at org.elasticsearch.bootstrap.elasticsearch.main(elasticsearch.java:93) ~[elasticsearch-6.4.1.jar:6.4.1] at org.elasticsearch.bootstrap.elasticsearch.main(elasticsearch.java:86) ~[elasticsearch-6.4.1.jar:6.4.1] caused by: java.lang.runtimeexception: can not run elasticsearch as root at org.elasticsearch.bootstrap.bootstrap.initializenatives(bootstrap.java:104) ~[elasticsearch-6.4.1.jar:6.4.1] at org.elasticsearch.bootstrap.bootstrap.setup(bootstrap.java:171) ~[elasticsearch-6.4.1.jar:6.4.1] at org.elasticsearch.bootstrap.bootstrap.init(bootstrap.java:326) ~[elasticsearch-6.4.1.jar:6.4.1] at org.elasticsearch.bootstrap.elasticsearch.init(elasticsearch.java:136) ~[elasticsearch-6.4.1.jar:6.4.1]
elasticsearch 不能以root用戶角色啟動(dòng),因此需要將安裝目錄授權(quán)給其他用戶,用其他用戶來啟動(dòng)

啟動(dòng)成功后,驗(yàn)證,打開新的終端,執(zhí)行如下命令:
[root@localhost ~]# curl 'http://localhost:9200/?pretty'
{
"name" : "o5bavye",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "rw1yjlzksgodxkuvgixmxg",
"version" : {
"number" : "6.4.1",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "e36acdb",
"build_date" : "2018-09-13t22:18:07.696808z",
"build_snapshot" : false,
"lucene_version" : "7.4.0",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "you know, for search"
}
[root@localhost ~]#返回信息則表示安裝成功!
4.安裝kibana
sense 是一個(gè) kibana 應(yīng)用 它提供交互式的控制臺(tái),通過你的瀏覽器直接向 elasticsearch 提交請(qǐng)求。 這本書的在線版本包含有一個(gè) view in sense 的鏈接,里面有許多代碼示例。當(dāng)點(diǎn)擊的時(shí)候,它會(huì)打開一個(gè)代碼示例的sense控制臺(tái)。 你不必安裝 sense,但是它允許你在本地的 elasticsearch 集群上測(cè)試示例代碼,從而使本書更具有交互性。
下載kibana
kibana是一個(gè)為 elasticsearch 提供的數(shù)據(jù)分析的 web 接口??墒褂盟鼘?duì)日志進(jìn)行高效的搜索、可視化、分析等各種操作
下載完成解壓kibana
[root@localhost elasticsearch]# tar -zxvf kibana-6.4.1-linux-x86_64.tar.gz
修改 配置config目錄下的kibana.yml 文件,配置elasticsearch地址和kibana地址信息
server.host: "192.168.92.50" # kibana 服務(wù)器地址 elasticsearch.url: "http://192.168.92.50:9200" # es 地址
啟動(dòng) kibana
[root@localhost bin]# ./kibana
安裝kibana本機(jī)訪問:http://localhost:5601/

選擇dev tools菜單,即可實(shí)現(xiàn)可視化請(qǐng)求

5.安裝logstash
下載logstash
下載完成解壓后,config目錄下配置日志收集日志配置文件 logstash.conf
# sample logstash configuration for creating a simple
# beats -> logstash -> elasticsearch pipeline.
input {
tcp {
mode => "server"
host => "192.168.92.50"
port => 4560
codec => json_lines
}
}
output {
elasticsearch {
hosts => "192.168.92.50:9200"
index => "springboot-logstash-%{+yyyy.mm.dd}"
}
}配置成功后啟動(dòng)logstatsh
[root@localhost bin]# ./logstash -f ../config/logstash.conf
es 一些基礎(chǔ)知識(shí):
索引(名詞):
如前所述,一個(gè) 索引 類似于傳統(tǒng)關(guān)系數(shù)據(jù)庫(kù)中的一個(gè) 數(shù)據(jù)庫(kù) ,是一個(gè)存儲(chǔ)關(guān)系型文檔的地方。 索引 (index) 的復(fù)數(shù)詞為 indices 或 indexes 。
索引(動(dòng)詞):
索引一個(gè)文檔 就是存儲(chǔ)一個(gè)文檔到一個(gè) 索引 (名詞)中以便它可以被檢索和查詢到。這非常類似于 sql 語句中的 insert 關(guān)鍵詞,除了文檔已存在時(shí)新文檔會(huì)替換舊文檔情況之外。
倒排索引:
關(guān)系型數(shù)據(jù)庫(kù)通過增加一個(gè) 索引 比如一個(gè) b樹(b-tree)索引 到指定的列上,以便提升數(shù)據(jù)檢索速度。elasticsearch 和 lucene 使用了一個(gè)叫做 倒排索引 的結(jié)構(gòu)來達(dá)到相同的目的。
put /megacorp/employee/1
{
"first_name" : "john",
"last_name" : "smith",
"age" : 25,
"about" : "i love to go rock climbing",
"interests": [ "sports", "music" ]
}返回結(jié)果:
#! deprecation: the default number of shards will change from [5] to [1] in 7.0.0; if you wish to continue using the default of [5] shards, you must manage this on the create index request or with an index template
{
"_index": "megacorp",
"_type": "employee",
"_id": "1",
"_version": 1,
"result": "created",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"_seq_no": 0,
"_primary_term": 1
}路徑 /megacorp/employee/1 包含了三部分的信息:
megacorp 索引名稱
employee 類型名稱
1 特定雇員的id
放置第二個(gè)雇員信息:
{
"_index": "megacorp",
"_type": "employee",
"_id": "2",
"_version": 1,
"result": "created",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"_seq_no": 0,
"_primary_term": 1
}返回結(jié)果:
{
"_index": "megacorp",
"_type": "employee",
"_id": "2",
"_version": 1,
"result": "created",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"_seq_no": 0,
"_primary_term": 1
}放置第三個(gè)雇員信息
{
"_index": "megacorp",
"_type": "employee",
"_id": "3",
"_version": 1,
"result": "created",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"_seq_no": 0,
"_primary_term": 1
}5.檢索文檔
檢索到單個(gè)雇員的數(shù)據(jù)
get /megacorp/employee/1
返回結(jié)果:
{
"_index": "megacorp",
"_type": "employee",
"_id": "1",
"_version": 1,
"found": true,
"_source": {
"first_name": "john",
"last_name": "smith",
"age": 25,
"about": "i love to go rock climbing",
"interests": [
"sports",
"music"
]
}
}6.輕量搜索
一個(gè) get 是相當(dāng)簡(jiǎn)單的,可以直接得到指定的文檔。 現(xiàn)在嘗試點(diǎn)兒稍微高級(jí)的功能,比如一個(gè)簡(jiǎn)單的搜索!
第一個(gè)嘗試的幾乎是最簡(jiǎn)單的搜索了。我們使用下列請(qǐng)求來搜索所有雇員:
get /megacorp/employee/_search
返回結(jié)果:
{
"took": 31,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 3,
"max_score": 1,
"hits": [
{
"_index": "megacorp",
"_type": "employee",
"_id": "2",
"_score": 1,
"_source": {
"first_name": "jane",
"last_name": "smith",
"age": 32,
"about": "i like to collect rock albums",
"interests": [
"music"
]
}
},
{
"_index": "megacorp",
"_type": "employee",
"_id": "1",
"_score": 1,
"_source": {
"first_name": "john",
"last_name": "smith",
"age": 25,
"about": "i love to go rock climbing",
"interests": [
"sports",
"music"
]
}
},
{
"_index": "megacorp",
"_type": "employee",
"_id": "3",
"_score": 1,
"_source": {
"first_name": "douglas",
"last_name": "fir",
"age": 35,
"about": "i like to build cabinets",
"interests": [
"forestry"
]
}
}
]
}
}通過姓名模糊匹配來獲得結(jié)果
get /megacorp/employee/_search?q=last_name:smith
返回結(jié)果:
{
"took": 414,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 2,
"max_score": 0.2876821,
"hits": [
{
"_index": "megacorp",
"_type": "employee",
"_id": "2",
"_score": 0.2876821,
"_source": {
"first_name": "jane",
"last_name": "smith",
"age": 32,
"about": "i like to collect rock albums",
"interests": [
"music"
]
}
},
{
"_index": "megacorp",
"_type": "employee",
"_id": "1",
"_score": 0.2876821,
"_source": {
"first_name": "john",
"last_name": "smith",
"age": 25,
"about": "i love to go rock climbing",
"interests": [
"sports",
"music"
]
}
}
]
}
}7.使用查詢表達(dá)式搜索
領(lǐng)域特定語言 (dsl), 指定了使用一個(gè) json 請(qǐng)求
get /megacorp/employee/_search
{
"query" : {
"match" : {
"last_name" : "smith"
}
}
}返回結(jié)果:
{
"took": 7,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 2,
"max_score": 0.2876821,
"hits": [
{
"_index": "megacorp",
"_type": "employee",
"_id": "2",
"_score": 0.2876821,
"_source": {
"first_name": "jane",
"last_name": "smith",
"age": 32,
"about": "i like to collect rock albums",
"interests": [
"music"
]
}
},
{
"_index": "megacorp",
"_type": "employee",
"_id": "1",
"_score": 0.2876821,
"_source": {
"first_name": "john",
"last_name": "smith",
"age": 25,
"about": "i love to go rock climbing",
"interests": [
"sports",
"music"
]
}
}
]
}
}8.更復(fù)雜的搜索
搜索姓氏為 smith 的雇員,但這次我們只需要年齡大于 30 的,使用過濾器 filter ,它支持高效地執(zhí)行一個(gè)結(jié)構(gòu)化查詢
get /megacorp/employee/_search
{
"query" : {
"bool": {
"must": {
"match" : {
"last_name" : "smith"
}
},
"filter": {
"range" : {
"age" : { "gt" : 30 }
}
}
}
}
}其中:range 過濾器 , 它能找到年齡大于 30 的文檔,其中 gt 表示_大于(_great than)
返回結(jié)果:
{
"took": 44,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 1,
"max_score": 0.2876821,
"hits": [
{
"_index": "megacorp",
"_type": "employee",
"_id": "2",
"_score": 0.2876821,
"_source": {
"first_name": "jane",
"last_name": "smith",
"age": 32,
"about": "i like to collect rock albums",
"interests": [
"music"
]
}
}
]
}
}9.全文搜索
搜索下所有喜歡攀巖(rock climbing)的雇員
get /megacorp/employee/_search
{
"query" : {
"match" : {
"about" : "rock climbing"
}
}
}返回結(jié)果:
{
"took": 17,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 2,
"max_score": 0.5753642,
"hits": [
{
"_index": "megacorp",
"_type": "employee",
"_id": "1",
"_score": 0.5753642,
"_source": {
"first_name": "john",
"last_name": "smith",
"age": 25,
"about": "i love to go rock climbing",
"interests": [
"sports",
"music"
]
}
},
{
"_index": "megacorp",
"_type": "employee",
"_id": "2",
"_score": 0.2876821,
"_source": {
"first_name": "jane",
"last_name": "smith",
"age": 32,
"about": "i like to collect rock albums",
"interests": [
"music"
]
}
}
]
}
}
10.全文搜索
找出一個(gè)屬性中的獨(dú)立單詞是沒有問題的,但有時(shí)候想要精確匹配一系列單詞或者短語 。 比如, 我們想執(zhí)行這樣一個(gè)查詢,僅匹配同時(shí)包含 “rock” 和 “climbing” ,并且 二者以短語 “rock climbing” 的形式緊挨著的雇員記錄。
get /megacorp/employee/_search
{
"query" : {
"match_phrase" : {
"about" : "rock climbing"
}
}
}返回結(jié)果:
{
"took": 142,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 1,
"max_score": 0.5753642,
"hits": [
{
"_index": "megacorp",
"_type": "employee",
"_id": "1",
"_score": 0.5753642,
"_source": {
"first_name": "john",
"last_name": "smith",
"age": 25,
"about": "i love to go rock climbing",
"interests": [
"sports",
"music"
]
}
}
]
}
}11.高亮搜索
許多應(yīng)用都傾向于在每個(gè)搜索結(jié)果中 高亮 部分文本片段,以便讓用戶知道為何該文檔符合查詢條件。在 elasticsearch 中檢索出高亮片段也很容易。
增加參數(shù): highlight
get /megacorp/employee/_search
{
"query" : {
"match_phrase" : {
"about" : "rock climbing"
}
},
"highlight": {
"fields" : {
"about" : {}
}
}
}返回結(jié)果:
{
"took": 250,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 1,
"max_score": 0.5753642,
"hits": [
{
"_index": "megacorp",
"_type": "employee",
"_id": "1",
"_score": 0.5753642,
"_source": {
"first_name": "john",
"last_name": "smith",
"age": 25,
"about": "i love to go rock climbing",
"interests": [
"sports",
"music"
]
},
"highlight": {
"about": [
"i love to go rock climbing"
]
}
}
]
}
}其中高亮模塊為highlight屬性
12.分析
elasticsearch 有一個(gè)功能叫聚合(aggregations),允許我們基于數(shù)據(jù)生成一些精細(xì)的分析結(jié)果。聚合與 sql 中的 group by 類似但更強(qiáng)大。
舉個(gè)例子,挖掘出雇員中最受歡迎的興趣愛好:
get /megacorp/employee/_search
{
"aggs": {
"all_interests": {
"terms": { "field": "interests" }
}
}
}返回結(jié)果:
{
...
"hits": { ... },
"aggregations": {
"all_interests": {
"buckets": [
{
"key": "music",
"doc_count": 2
},
{
"key": "forestry",
"doc_count": 1
},
{
"key": "sports",
"doc_count": 1
}
]
}
}
}以上就是“Centos7安裝ElasticSearch實(shí)例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會(huì)為大家更新不同的知識(shí),如果還想學(xué)習(xí)更多的知識(shí),請(qǐng)關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道。