[Elasticsearch Tutorial] 2. 開始寫入(index)你的資料

這篇要開始寫入我們的資料進Elasticsearch拉,如果還沒安裝,可以參考上一篇 [Elasticsearch Tutorial] 1. 利用Docker安裝Elasticsearch, 本機或GCE上

Index

Elasticssearch是個document store,document會被寫入到index裡,index有點像是一般資料庫裡的table,就是一群相似的資料的集合,資料一被寫入到index,Elasticsearch就會對每筆資料的每個欄位建立索引,對於不同資料型態的欄位,都會建立特定且優化過的資料結構,至於每個欄位是什麼資料型態(mappings),可以在建立index的時候指明,或是在寫入資料時,由系統自己幫你判斷(dynamic mappings),並且之後不能更新,只能刪掉再重建.

建立index,PUT /<index>

現在我們來建立一個名為test的index,PUT /<index> 就可以了,body中settings.index裡我們把number_of_replicas設成0,因為我們只有一個node,預設的話1,不改的話其實也是都可以使用的,mappings就是我們上面提到的每個欄位的資料型態,在這裡我們先不設,只是先寫出來讓大家知道,如果要設的是長怎樣.


查看index,GET /<index>

接著來一下我們剛剛建立的名為test的index,GET /<index>


能夠看到test index的資訊,可以看mappings那邊還是空的,等等我們寫入資料後,Elasticsearch就會根據我們的資料,自動建立出mappings

開始寫入資料

PUT /<index>/_doc/<id>

在request body裡放入要寫入的document,並指定一個id,這裡是1,如果沒有id,會隨機產生一個給你,如果id已經存在,原本的document就會被replace掉,如果想要partial update一個本來已經存在的document的話,如下

POST /<index>/_update/<id>


原本的document會跟新的merge在一起,但如果id不存在就會失敗,最後如果要upsert,也就是不存在就insert,存在了就partial update的話,加上一個doc_as_upsert: true就可以了


基本寫入的操作就介紹到這邊,現在我們可以回過頭來看看mappings

Dynamic field mapping

在我們剛剛寫入了一些document後,可以看到inde的資訊變成這樣

mappings.properties多了name跟age的欄位,分別是long跟text的data type,之後會在介紹Elasticsearch裡各種可以使用的資料型態.

留言

這個網誌中的熱門文章

[Google Sheet] 使用樞紐分析,Pivot table,資料透視表,來統計分析你的資料

[Google Sheet] Sparkline,在儲存格裡插入迷你圖表