ElasticSearch入門教程

什么是ElasticSearch

  • 基于Apache Lucene構(gòu)建的開源搜索引擎
  • 采用Java編寫,提供簡(jiǎn)單易用的RESTFul API
  • 輕松的橫向擴(kuò)展猪半,可支持BP級(jí)的結(jié)構(gòu)化和非結(jié)構(gòu)化的數(shù)據(jù)處理

可應(yīng)用場(chǎng)景

  • 海量數(shù)據(jù)分析引擎
  • 站內(nèi)搜索引擎
  • 數(shù)據(jù)倉庫

一線公司實(shí)際應(yīng)用場(chǎng)景

  • 英國衛(wèi)報(bào) - 實(shí)時(shí)分析公眾對(duì)文章的回應(yīng)
  • 維基百科染服、GitHub-站內(nèi)實(shí)時(shí)搜索
  • 百度 - 實(shí)時(shí)日志監(jiān)控平臺(tái)

安裝

Windows系統(tǒng)下Elasticsearch安裝與Elasticsearch-head插件安裝

分布式安裝

  1. 修改D:\Program Files\elasticsearch-5.5.2\config\elasticsearch.yml文件
    在文件末尾加入:
cluster.name: fly #集群名
node.name: master #節(jié)點(diǎn)名
node.master: true #是否為主節(jié)點(diǎn)
network.host: 127.0.0.1 #ip地址
  1. 將elasticsearch-5.5.2.zip解壓為elasticsearch-1,修改elasticsearch-1\config\elasticsearch.yml文件,在文件末尾加入:
http.cors.enabled: true  #跨域
http.cors.allow-origin: "*"  #跨域
cluster.name: fly #集群名
node.name: slave1 #隨從節(jié)點(diǎn)名
network.host: 127.0.0.1 #IP地址
http.port: 8200 #端口號(hào)
discovery.zen.ping.unicast.hosts: ["127.0.0.1"]  #設(shè)置尋找主節(jié)點(diǎn)
  1. 將elasticsearch-5.5.2.zip解壓為elasticsearch-2,修改elasticsearch-2\config\elasticsearch.yml文件棚菊,在文件末尾加入:
http.cors.enabled: true  #跨域
http.cors.allow-origin: "*"  #跨域
cluster.name: fly #集群名
node.name: slave2 #隨從節(jié)點(diǎn)名
network.host: 127.0.0.1 #IP地址
http.port: 7200 #端口號(hào)
discovery.zen.ping.unicast.hosts: ["127.0.0.1"]  #設(shè)置尋找主節(jié)點(diǎn)

訪問localhost:9100如下圖:


localhost:9100

基礎(chǔ)概念

  • 集群和節(jié)點(diǎn):一個(gè)集群是由多個(gè)節(jié)點(diǎn)組成的集合
  • 索引:含有相同屬性的文檔集合
  • 類型:索引可以包含一個(gè)或多個(gè)類型显押,文檔必須屬于一個(gè)類型
  • 文檔:文檔是可以被索引的基本數(shù)據(jù)單元
  • 分片:每個(gè)索引都有多個(gè)分片链韭,每個(gè)分片都是Lucene索引
  • 備份:拷貝一個(gè)分片就完成了分片的索引

索引創(chuàng)建

  • API基本格式:http://<ip>:<port>/<索引>/<類型>/<文檔id>
    創(chuàng)建索引:訪問localhost:9100,點(diǎn)擊索引->創(chuàng)建索引煮落,輸入索引名book(小寫)敞峭,這樣創(chuàng)建的索引為非結(jié)構(gòu)化索引。
    使用postman創(chuàng)建索引:
  • 選擇方式為PUT蝉仇,輸入地址:127.0.0.1:9200/people
  • 點(diǎn)擊Body->row旋讹,文件格式選擇json,輸入內(nèi)容:
{
    "settings":{
        "number_of_shards":3,
        "number_of_replicas":1
    },
    "mappings":{
        "man":{
            "properties":{
                "name":{
                    "type":"text"
                },
                "country":{
                    "type":"keyword"
                },
                "age":{
                    "type":"integer"
                },
                "date":{
                    "type":"date",
                    "format":"yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
                }
            }
        }
    }
}

如下圖:


image

點(diǎn)擊send轿衔,返回內(nèi)容:

{
    "acknowledged": true,
    "shards_acknowledged": true
}

訪問127.0.0.1:9100沉迹,將會(huì)看到以添加people節(jié)點(diǎn)

文檔插入

文檔插入又分為:

  • 指定文檔id插入:選擇PUT,地址輸入:127.0.0.1:9200/people/man/1害驹,內(nèi)容輸入:
{
    "name":"石頭",
    "age":"28",
    "countory":"Chian",
    "date":"1990-11-21"
}

點(diǎn)擊send鞭呕,返回內(nèi)容:

{
    "_index": "people",
    "_type": "man",
    "_id": "1",
    "_version": 1,
    "result": "created",
    "_shards": {
        "total": 2,
        "successful": 2,
        "failed": 0
    },
    "created": true
}
  • 自動(dòng)產(chǎn)生文檔id插入:選擇POST,地址輸入:127.0.0.1:9200/people/man/宛官,內(nèi)容輸入:
{
    "name":"瘋狂的石頭",
    "age":"29",
    "countory":"Chian",
    "date":"1990-11-22"
}

點(diǎn)擊send葫松,返回內(nèi)容

{
    "_index": "people",
    "_type": "man",
    "_id": "AWEc_pyp21iCO45paMTd",
    "_version": 1,
    "result": "created",
    "_shards": {
        "total": 2,
        "successful": 2,
        "failed": 0
    },
    "created": true
}

刷新localhost:9100,看到people索引的docs的數(shù)量為2

修改文檔

  • 直接修改文檔: 選擇POST底洗,地址輸入127.0.0.1:9200/people/man/1/_update腋么,內(nèi)容輸入:
{
    "doc":{
        "age":30
    }
}

訪問localhost:9100,點(diǎn)擊數(shù)據(jù)瀏覽,刷新亥揖,將會(huì)看到age已經(jīng)變?yōu)?0了

  • 通過腳本修改文檔:選擇POST珊擂,地址輸入127.0.0.1:9200/people/man/1/_update,內(nèi)容輸入:
{
    "script":{
        "lang":"painless",
        "inline":"ctx._source.age += 10"
    }
}

訪問localhost:9100,點(diǎn)擊數(shù)據(jù)瀏覽,刷新费变,將會(huì)看到age已經(jīng)變?yōu)?0了

文檔查詢

  • 簡(jiǎn)單查詢:
GET localhost:9200/people/man/1

返回結(jié)果

{
    "_index": "people",
    "_type": "man",
    "_id": "1",
    "_version": 3,
    "found": true,
    "_source": {
        "name": "石頭",
        "age": 40,
        "countory": "Chian",
        "date": "1990-11-21"
    }
}
  • 條件查詢:
POST 127.0.0.1:9200/people/man/_search
body輸入內(nèi)容:
{
    "query":{
        "match_all":{}
    }
}

返回結(jié)果

{
    "took": 7, #耗時(shí)
    "timed_out": false,
    "_shards": {
        "total": 3,
        "successful": 3,
        "failed": 0
    },
    "hits": {
        "total": 2,
        "max_score": 1,
        "hits": [
            {
                "_index": "people",
                "_type": "man",
                "_id": "AWEc_pyp21iCO45paMTd",
                "_score": 1,
                "_source": {
                    "name": "瘋狂的石頭",
                    "age": "29",
                    "countory": "Chian",
                    "date": "1990-11-22"
                }
            },
            {
                "_index": "people",
                "_type": "man",
                "_id": "1",
                "_score": 1,
                "_source": {
                    "name": "石頭",
                    "age": 40,
                    "countory": "Chian",
                    "date": "1990-11-21"
                }
            }
        ]
    }
}

指定文檔起始位置與大小查詢

POST 127.0.0.1:9200/people/man/_search
body輸入內(nèi)容:
{
    "query":{
        "match_all":{}
    },
    "from": 1,
    "size": 1
}

從第一個(gè)文檔查詢摧扇,查詢大小為1,返回結(jié)果:

{
    "took": 7,
    "timed_out": false,
    "_shards": {
        "total": 3,
        "successful": 3,
        "failed": 0
    },
    "hits": {
        "total": 2,
        "max_score": 1,
        "hits": [
            {
                "_index": "people",
                "_type": "man",
                "_id": "1",
                "_score": 1,
                "_source": {
                    "name": "石頭",
                    "age": 40,
                    "countory": "Chian",
                    "date": "1990-11-21"
                }
            }
        ]
    }
}

按條件查詢

POST 127.0.0.1:9200/people/man/_search
body輸入內(nèi)容:
{
    "query":{
        "match":{
            "name":"石頭"
        }
    },
    "sort":{
        "age":{
            "order":"desc"
        }
    }
}

sort:排序
返回內(nèi)容:

{
    "took": 148,
    "timed_out": false,
    "_shards": {
        "total": 3,
        "successful": 3,
        "failed": 0
    },
    "hits": {
        "total": 2,
        "max_score": null,
        "hits": [
            {
                "_index": "people",
                "_type": "man",
                "_id": "1",
                "_score": null,
                "_source": {
                    "name": "石頭",
                    "age": 40,
                    "countory": "Chian",
                    "date": "1990-11-21"
                },
                "sort": [
                    40
                ]
            },
            {
                "_index": "people",
                "_type": "man",
                "_id": "AWEc_pyp21iCO45paMTd",
                "_score": null,
                "_source": {
                    "name": "瘋狂的石頭",
                    "age": "29",
                    "countory": "Chian",
                    "date": "1990-11-22"
                },
                "sort": [
                    29
                ]
            }
        ]
    }
}
  • 聚合查詢
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末挚歧,一起剝皮案震驚了整個(gè)濱河市扛稽,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌昼激,老刑警劉巖庇绽,帶你破解...
    沈念sama閱讀 221,548評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件锡搜,死亡現(xiàn)場(chǎng)離奇詭異橙困,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)耕餐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門凡傅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人肠缔,你說我怎么就攤上這事夏跷『咦” “怎么了?”我有些...
    開封第一講書人閱讀 167,990評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵槽华,是天一觀的道長(zhǎng)壹蔓。 經(jīng)常有香客問我,道長(zhǎng)猫态,這世上最難降的妖魔是什么佣蓉? 我笑而不...
    開封第一講書人閱讀 59,618評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮亲雪,結(jié)果婚禮上勇凭,老公的妹妹穿的比我還像新娘。我一直安慰自己义辕,他們只是感情好虾标,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,618評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著灌砖,像睡著了一般璧函。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上基显,一...
    開封第一講書人閱讀 52,246評(píng)論 1 308
  • 那天柳譬,我揣著相機(jī)與錄音,去河邊找鬼续镇。 笑死美澳,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的摸航。 我是一名探鬼主播制跟,決...
    沈念sama閱讀 40,819評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼酱虎!你這毒婦竟也來了雨膨?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,725評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤读串,失蹤者是張志新(化名)和其女友劉穎聊记,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體恢暖,經(jīng)...
    沈念sama閱讀 46,268評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡排监,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,356評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了杰捂。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片舆床。...
    茶點(diǎn)故事閱讀 40,488評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出挨队,到底是詐尸還是另有隱情谷暮,我是刑警寧澤,帶...
    沈念sama閱讀 36,181評(píng)論 5 350
  • 正文 年R本政府宣布盛垦,位于F島的核電站湿弦,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏腾夯。R本人自食惡果不足惜省撑,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,862評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望俯在。 院中可真熱鬧竟秫,春花似錦、人聲如沸跷乐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽愕提。三九已至馒稍,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間浅侨,已是汗流浹背纽谒。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評(píng)論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留如输,地道東北人鼓黔。 一個(gè)月前我還...
    沈念sama閱讀 48,897評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像不见,于是被迫代替她去往敵國和親澳化。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,500評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容