# ElasticSearch ###### tags: `database` `elasticsearch` ## 1. 安裝 mac上安裝 ```bash= $ brew tap elastic/tap $ brew install elastic/tap/elasticsearch-full ``` 通常ES官配是kibana,可以裝起來一起使用 ```bash= $ brew install elastic/tap/kibana-full ``` 啟動就分別在terminal輸入 ```bash= $ elasticsearch $ kibana ``` ## 2. 使用 ES的語法就是敲API。 elasticsearch index = mongo collection = SQL table >只不過他的同一個詞會拿來當動詞跟名詞使用,像是index可以當成表也可以當成插入… ### 常用方法 > 記得要加伺服器資訊,這邊是localhost ### 1. 增 ``` PUT /<index>/_doc/<_id> // 自訂data id POST /<index>/_doc/ // 預設data id {data} // 資料內容記得帶進json body裡面 ``` ### 2. 刪 ``` DELETE /<index>/_doc/<_id> ``` ### 3. 改 ``` POST /<index>/_update/<_id> {data} ``` ### 4. 查 ``` GET /<index>/_doc/<_id> ``` ## Mapping 除了可以直接插入資料以外,也可以先創造一個index並賦予固定的data type,避免資料type錯誤 創造index並且插入mapping ``` PUT /<index> { "mapping": { "name": { "type": "text" } } } ``` 另外的[data type](https://www.elastic.co/guide/en/elasticsearch/reference/7.12/mapping-types.html)可以進官方看,真的太多了。 ## Pipeline 這是ES比較特別的東西,可以在插入資料時掛上,以豐富資料或是更改資料屬性(有點ETL的味道)。 1. 首先要先創建一個pipeline ``` PUT /_ingest/pipeline/<pipeline> ``` 2. 可以查看到你剛剛創的pipeline ``` GET /_ingest/pipeline/<pipeline> ``` 3. 使用pipeline ``` PUT /<target>/_doc/<_id>?pipeline=<pipeline> ``` 這邊可以看到就是插入後面帶一個param去掛上pipeline 其餘還有很多可以玩的例如IndexLifecycleManagement的部分,還有kibana畫表的功能也非常強大。 ![](https://paper-attachments.dropbox.com/s_3D3380C7643888BD21AA9DA53E1C6E3D4DE6A9E2064FE474F905BA3617732B8F_1620632426445_+2021-05-10+3.40.02.png)