[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裡各種可以使用的資料型態.
留言
張貼留言