elasticsearch--淺識

推薦初學(xué)學(xué)習(xí)路程
阮一峰老師的基礎(chǔ)介紹
官方中文權(quán)威指南

elasticsearch是啥?

Elasticsearch 是一個分布式、可擴(kuò)展、實(shí)時(shí)的搜索與數(shù)據(jù)分析引擎。賦予你的數(shù)據(jù)以搜索、分析和探索的能力。

elasticsearch術(shù)語

了解es術(shù)語是快速掌握es架構(gòu)設(shè)計(jì)的基礎(chǔ)

  • Node(節(jié)點(diǎn)) 與 Cluster(集群)
    Elastic 本質(zhì)上是一個分布式數(shù)據(jù)庫,允許多臺服務(wù)器協(xié)同工作,每臺服務(wù)器可以運(yùn)行多個 Elastic 實(shí)例。
    單個 Elastic 實(shí)例稱為一個節(jié)點(diǎn)(node)。一組節(jié)點(diǎn)構(gòu)成一個集群(cluster)。

  • Index (索引)
    索引就是像關(guān)系數(shù)據(jù)庫中的“數(shù)據(jù)庫”。通過映射可以定義成多種類型。索引是一個邏輯命名空間映射到一個或多個主要的分片,可以有零個或多個副本分片
    下面的命令可以查看當(dāng)前節(jié)點(diǎn)的所有 Index:
    $ curl -X GET 'http://localhost:9200/_cat/indices?v'

  • Document(文檔)
    Index 里面單條的記錄稱為 Document(文檔)。許多條 Document 構(gòu)成了一個 Index(索引)。同一個 Index 里面的 Document,不要求有相同的結(jié)構(gòu)(scheme),但是最好保持相同,這樣有利于提高搜索效率。
    Document 使用 JSON 格式表示,例:

{
   "user": "張三",
   "title": "工程師",
   "desc": "數(shù)據(jù)庫管理"
 }
  • Field(字段)
    文檔中包含的一組字段或鍵值對。字段的值可以是一個簡單的(標(biāo)量)值(如字符串,整數(shù),日期),或者一個嵌套的結(jié)構(gòu)就像一個數(shù)組或?qū)ο蟆R粋€字段就是類似關(guān)系數(shù)據(jù)庫表中的一列。

  • Id(標(biāo)識)
    每個文檔ID標(biāo)識了一個文檔。一個文檔的索引/類型/ ID必須是唯一的。如果沒有提供ID,將是自動生成。

  • Source field(源字段)
    默認(rèn)情況下,你的JSON文檔將被索引存儲在_source字段里面,所有的get(獲?。┖蛃earch(搜索)請求將返回的該字段。這將允許你直接從搜索結(jié)果中訪問到源數(shù)據(jù),而不需要再次發(fā)起請求檢索。
    注:索引將返回完整的的JSON字符串給你,即使它包含無效的JSON。此字段里的內(nèi)容不表示任何該對象里面的數(shù)據(jù)如何被索引。

  • Term(術(shù)語)
    在elasticsearch里,術(shù)語(term)是一個被索引的精確值。術(shù)語 foo, Foo,FOO 是不想等的。術(shù)語(即精確值)可以使用“term”查詢接口來查詢。

  • Text(文本)
    文本(或全文)是普通非結(jié)構(gòu)化的文本,如本段。默認(rèn)情況下,文本將被分析成術(shù)語,術(shù)語才是實(shí)際存儲在索引中。文本字段在索引時(shí)需要進(jìn)行分析,以便全文搜索,全文查詢的關(guān)鍵字在搜索時(shí),必須分析產(chǎn)生(搜索)與索引時(shí)相同的術(shù)語。

  • Type(類型)
    Document 可以分組,如weather這個 Index 里面,可以按城市分組(北京和上海),也可以按氣候分組(晴天和雨天)。這種分組就叫做 Type,它是虛擬的邏輯分組,用來過濾 Document。不同的 Type 應(yīng)該有相似的結(jié)構(gòu)(schema),舉例來說,id字段不能在這個組是字符串,在另一個組是數(shù)值。這是與關(guān)系型數(shù)據(jù)庫的表的一個區(qū)別。性質(zhì)完全不同的數(shù)據(jù)(比如products和logs)應(yīng)該存成兩個 Index,而不是一個 Index 里面的兩個 Type(雖然可以做到)。

下面的命令可以列出每個 Index 所包含的 Type。
$ curl 'localhost:9200/_mapping?pretty=true'
根據(jù)規(guī)劃,Elastic 6.x 版只允許每個 Index 包含一個 Type,7.x 版將會徹底移除 Type。

  • Mapping(映射)
    映射是像關(guān)系數(shù)據(jù)庫中的”模式定義“。每個索引都有一個映射,它定義了每個索引的類型,再加上一些索引范圍的設(shè)置。映射可以被明確地定義,或者在一個文檔被索引的時(shí)候自動生成。

  • Analysis(分析)
    分析的過程就是將全文(full text)轉(zhuǎn)換成 術(shù)語/分詞(terms)。 這取決于使用那個分析器

  • Shard(分片)
    一個分片是一個單一的Lucene的實(shí)例。這是一個低級別的通過ElasticSearch自動管理的“工作者”單元。索引是一個邏輯命名空間指向主分片和副本分片。索引的主分片和副本分片的數(shù)量需要明確的指定。然而你的代碼應(yīng)該只處理一個索引。Elasticsearch分配集群中所有節(jié)點(diǎn)的分片。在節(jié)點(diǎn)出現(xiàn)故障或增加新節(jié)點(diǎn)的時(shí)候,可以自動的將一個節(jié)點(diǎn)上的分片移動到另一個節(jié)點(diǎn)上。

  • Primary shard(主分片)
    每個文檔都存儲在一個主要分片上。當(dāng)你索引一個文檔時(shí),索引首先生成在主分片上,然后才到主分片的所有副本上。默認(rèn)情況下,索引有5個主分片??梢灾付ǜ嗷蚋俚闹鞣制瑏磉m應(yīng)索引可以處理的文檔數(shù)。一旦創(chuàng)建了索引,就不能改變索引中主分片的數(shù)量。

  • Replica shard(副本分片)
    每個主分片可以有零個或多個副本。副本是主分片的一個拷貝,有兩個作用:

    • 1、故障轉(zhuǎn)移:如果主分片有問題,副本分片可以提升為主分片;
    • 2、提高性能:獲取和搜索請求可以處理主分片或副本分片。
      默認(rèn)情況下,每個主分片有一個副本,不過索引的副本數(shù)量可以動態(tài)地改變。在同一個節(jié)點(diǎn)上,一個副本分片將永遠(yuǎn)不會和其主分片一起運(yùn)行。
  • Routing(路由)
    當(dāng)你索引一個文檔,它是存儲在一個主分片里。這分片的選擇是通過哈希的路由值。默認(rèn)情況下,路由值來自文檔的ID;如果該文檔指定了父文檔,則使用父文檔的ID(以確保這個子文檔和父文件都存儲在相同的分片上)。這個路由值可以在索引的時(shí)候,通過指定數(shù)值或者配置字段映射來覆蓋。

常用命令

  • 創(chuàng)建索引
    $ curl -X PUT 'localhost:9200/weather'
    服務(wù)器返回一個 JSON 對象,里面的acknowledged字段表示操作成功。
{
  "acknowledged":true,
  "shards_acknowledged":true
}
  • 刪除索引
    $ curl -X DELETE 'localhost:9200/weather'

  • 新增記錄

$ curl -X PUT 'localhost:9200/weather/clouds/1' -d '
    {
      "date": "2018-10-10",
      "title": "多云",
      "desc": "天氣轉(zhuǎn)冷,添加衣物"
    }'

/weather/clouds/1 weather既是索引名 clouds為文檔名 1為設(shè)定Id為1

  • 查找記錄
    向/Index/Type/Id發(fā)出 GET 請求,就可以查看這條記錄。
    $ curl 'localhost:9200/weather/clouds/1?pretty=true'

  • 刪除記錄
    $ curl -X DELETE 'localhost:9200/weather/clouds/1'

  • 數(shù)據(jù)查詢
    使用 GET 方法,直接請求/Index/Type/_search,就會返回所有記錄。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 32,291評論 2 89
  • 簡介 Elasticsearch是一個高可擴(kuò)展的開源全文搜索和分析引擎,它允許存儲、搜索和分析大量的數(shù)據(jù),并且這個...
    零度沸騰_yjz閱讀 5,576評論 0 8
  • 基礎(chǔ)概念 Elasticsearch有幾個核心概念,從一開始理解這些概念會對整個學(xué)習(xí)過程有莫大的幫助。 接近實(shí)時(shí)(...
    山天大畜閱讀 2,163評論 0 4
  • 請自己慢慢改掉壞習(xí)慣吧 以后少發(fā)脾氣 變得有主見起來 不要總是唉聲嘆氣 沒有人喜歡身邊總是唉聲嘆氣的朋友
    魚er79閱讀 248評論 0 0
  • 最近看完了馬爾克斯的《百年孤獨(dú)》,對孤獨(dú)、人性、宿命有了更深刻的理解。 百年,是一個世紀(jì),既是終點(diǎn)又是起點(diǎn);換句話...
    云歸閱讀 283評論 0 6

友情鏈接更多精彩內(nèi)容