ES(ElasticSearch) 索引創建


環境:ES 6.2.2

os:Centos  7

kibana:6.2.2

介紹

  • 索引是ElasticSearch存放數據的地方,可以理解為關系型數據庫中的一個數據庫。事實上,我們的數據被存儲和索引在分片(shards)中,索引只是一個把一個或多個分片分組在一起的邏輯空間。然而,這只是一些內部細節——我們的程序完全不用關心分片。對於我們的程序而言,文檔存儲在索引(index)中。剩下的細節由Elasticsearch關心既可。(索引的名字必須是全部小寫,不能以下划線開頭,不能包含逗號)
  • 類型用於區分同一個索引下不同的數據類型,相當於關系型數據庫中的表。在Elasticsearch中,我們使用相同類型(type)的文檔表示相同的“事物”,因為他們的數據結構也是相同的。每個類型(type)都有自己的映射(mapping)或者結構定義,就像傳統數據庫表中的列一樣。所有類型下的文檔被存儲在同一個索引下,但是類型的映射(mapping)會告訴Elasticsearch不同的文檔如何被索引。
  • 文檔是ElasticSearch中存儲的實體,類比關系型數據庫,每個文檔相當於數據庫表中的一行數據。 在Elasticsearch中,文檔(document)這個術語有着特殊含義。它特指最頂層結構或者根對象(root object)序列化成的JSON數據(以唯一ID標識並存儲於Elasticsearch中)。
  • 文檔由字段組成,相當於關系數據庫中列的屬性,不同的是ES的不同文檔可以具有不同的字段集合。 
    對比關系型數據庫:

文檔元數據

一個文檔不只有數據。它還包含了元數據(metadata)——關於文檔的信息。三個必須的元數據節點是:

節點 說明
_index 文檔存儲的地方
_type 文檔代表的對象的類
_id 文檔的唯一標識

_index:索引

_type:類型

_id:id僅僅是一個字符串,它與_index_type組合時,就可以在Elasticsearch中唯一標識一個文檔。當創建一個文檔,你可以自定義_id,也可以讓Elasticsearch幫你自動生成。

索引創建原則

  1. 類似的數據放在一個索引,非類似的數據放不同索引:product index(包含了所有的商品),sales index(包含了所有的商品銷售數據),inventory index(包含了所有庫存相關的數據)。如果你把比如product,sales,human resource(employee),全都放在一個大的index里面,比如說company index,不合適的。
  2. index中包含了很多類似的document:類似是什么意思,其實指的就是說,這些document的fields很大一部分是相同的,你說你放了3個document,每個document的fields都完全不一樣,這就不是類似了,就不太適合放到一個index里面去了。
  3. 索引名稱必須是小寫的,不能用下划線開頭,不能包含逗號:product,website,blog

 

1、創建新的索引(index)

    PUT indexTest001

    結果:

 

 

2、索引設置

      ES 默認提供了好多索引配置選項,參考https://www.elastic.co/guide/en/elasticsearch/reference/6.8/index-modules.html,這些配置選項都有經過優化的默認配置值,除非你非常清楚這些配置的作用以及知道為什么去修改它,不然使用其默認值即可。

a、分片設置

        number_of_shards
        每個索引的主分片數,默認值是 5 。這個配置在索引創建后不能修改。
        number_of_replicas

        每個主分片的副本數,默認值是 1 。對於活動的索引庫,這個配置可以隨時修改。

        例如,我們可以創建只有 一個主分片,沒有副本的小索引:
        PUT /my_test_index_004
        {
            "settings": {
            "number_of_shards" :   1,
            "number_of_replicas" : 0
            }

        }

        更改副本數量:

        PUT /my_test_index_004/_settings
        {
            "number_of_replicas": 2

        }

     每次更改分片之后可以使用:GET my_test_index_004/_search_shards 來查詢索引信息.

3、創建mapping

    a、首先查看剛剛創建的索引的mapping是什么樣子的

        GET indextest001/_mapping

        結果:

        

 

 

         可見新建的索引中,mapping是一個空集,所以我們就要創建這個index的mapping

 命令:

        POST indextest001/product/_mapping?pretty 

    {"product":{"properties":{"title":{"type":"text","store":"true"},"description":{"type":"text","index":"false"},"price":{"type":"double"},"onSale":{"type":"boolean"},"type":{"type":"integer"},"createDate":{"type":"date"}}}}

執行完畢后再次執行上面所述查詢結果如下:

 

 

4、插入數據

POST indextest001/product
{
  "title": "test title 001",
  "description": "this is a random desc ",
  "price": 22.6,
  "onSale": "true",
  "type": 2,
  "createDate": "2018-01-12"

}

 然后查詢一下所有數據,默認為match_all

 GET indextest001/product/

根據id查詢

 GET indextest001/product/UNBdGWIBI2NcsxokJ0lQ

 結果如下:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM