ElasticSearch 入門 - 功能及操作說明
ElasticSearch 可以把數據透過 Index 索引的方式來儲存。
通常,一台機器可以運行多個 ElasticSearch,每一個都視為一個節點(Node)。
在 ElasticSearch 主要結構與關聯資料庫做對比的話,關係大致如下:
ElasticSearch | 關聯資料庫 |
---|---|
索引(Index) | 資料庫(Database) |
類型(Type) | 資料表(Table) |
文檔(Document) | 數據行紀錄(Row) |
域(Field) | 數據列(Column) |
參數映射(Mapping) | 模式(Schema) |
建構環境
搜尋Elasticsearch image (可查看 DockerHub https://hub.docker.com/_/elasticsearch)
docker search elasticsearch
將 image 拉到本地,並且要指定版本號(沒有提供lastest)
docker pull elasticsearch:7.8.0
查看 Images
docker images
接執行指令,其中參數 -e 的 discovery.type=single-node是設置單節點,ES_JAVA_OPTS="-Xms256m -Xmx256m"是設置 JVM參數
docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d --name ES01 elasticsearch:7.8.0
訪問本地 http://localhost:9200/
CVT2HUGO: 若出現以下內容表示成功運行
{
"name": "b845a1c2f258",
"cluster_name": "docker-cluster",
"cluster_uuid": "p8r7aRFiQeqdKU08IGtiVQ",
"version": {
"number": "7.8.0",
"build_flavor": "default",
"build_type": "docker",
"build_hash": "757314695644ea9a1dc2fecd26d1a43856725e65",
"build_date": "2020-06-14T19:35:50.234439Z",
"build_snapshot": false,
"lucene_version": "8.5.1",
"minimum_wire_compatibility_version": "6.8.0",
"minimum_index_compatibility_version": "6.0.0-beta1"
},
"tagline": "You Know, for Search"
}
結構簡介
可以透過 _cat 查看支援的命令
http://localhost:9200/_cat
=^.^=
/_cat/allocation
/_cat/shards
/_cat/shards/{index}
/_cat/master
/_cat/nodes
/_cat/tasks
/_cat/indices
/_cat/indices/{index}
/_cat/segments
/_cat/segments/{index}
/_cat/count
/_cat/count/{index}
/_cat/recovery
/_cat/recovery/{index}
/_cat/health
/_cat/pending_tasks
/_cat/aliases
/_cat/aliases/{alias}
/_cat/thread_pool
/_cat/thread_pool/{thread_pools}
/_cat/plugins
/_cat/fielddata
/_cat/fielddata/{fields}
/_cat/nodeattrs
/_cat/repositories
/_cat/snapshots/{repository}
/_cat/templates
/_cat/ml/anomaly_detectors
/_cat/ml/anomaly_detectors/{job_id}
/_cat/ml/trained_models
/_cat/ml/trained_models/{model_id}
/_cat/ml/datafeeds
/_cat/ml/datafeeds/{datafeed_id}
/_cat/ml/data_frame/analytics
/_cat/ml/data_frame/analytics/{id}
/_cat/transforms
/_cat/transforms/{transform_id}
可以透過 ?v
CVT2HUGO: 查看詳細內容
//查看結構
localhost:9200/_cat/master?v
//查看套件
localhost:9200/_cat/plugins?v
//查看索引
localhost:9200/_cat/indices?v
//健康檢查
localhost:9200/_cat/health?v
//硬碟佔用率
localhost:9200/_cat/allocation?v
ElasticSearch 使用 RESTFul API 操作說明
請求方式 | 用途 |
---|---|
GET | 搜尋數據,相當於 Select |
POST | 更新數據,相當於 Update |
PUT | 新增數據,相當於 Insert |
DELETE | 刪除數據,相當於 Delete |
例如
查詢所有索引資料
curl -X GET 'http://localhost:9200/_cat/indices?v'
新增資料
curl -H "Content-Type:application/json" -X PUT localhost:9200/shop/user/1 -d '{"id" :1,"username":"adam","balance":"100"}'
查詢,可以直接從瀏覽器查詢 http://localhost:9200/shop/user/1?pretty=true
curl localhost:9200/shop/user/1
更新資料
curl -H "Content-Type:application/json" -X POST localhost:9200/shop/user/1 -d '{"id" :1,"username":"adam","balance":"200"}'
刪除使用者
curl -H "Content-Type:application/json" -X DELETE localhost:9200/shop/user/1