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