文章目录
ElasticSearch 快速入门
docker 安装elastic search
安装
kibana 是 可视化界面
docker pull elasticsearch:7.4.2
docker pull kibana:7.4.2
配置
为了后续创建docker容器时方便挂载,事先创建好配置目录和数据目录
#配置目录 和 数据目录
mkdir -p /mydata/elasticsearch/config
mkdir -p /mydata/elasticsearch/data
#编写配置文件 es可以被远程任何机器访问
echo "http.host: 0.0.0.0" >/mydata/elasticsearch/config/elasticsearch.yml
创建Elasticsearch容器并启动
# 9200是用户交互端口 9300是集群心跳端口
# -e指定是单阶段运行
# -e指定占用的内存大小,生产时可以设置32G
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx128m" \
-v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \
-v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.4.2
#如果报错了可以查看日志
docker logs elasticsearch
#可能是数据挂载到了Linux中 权限不足 设置读写执行权限
chmod -R 777 /mydata/elasticsearch/
# 设置开机启动elasticsearch
docker update elasticsearch --restart=always
访问9200端口成功
创建kibana容器并启动
# kibana指定了了ES交互端口9200
# 5601为kibana主页端口
docker run --name kibana -e ELASTICSEARCH_HOSTS=http://服务器IP地址:9200 -p 5601:5601 -d kibana:7.4.2
# 设置开机启动kibana
docker update kibana --restart=always
https://www.elastic.co/guide/en/elasticsearch/reference/current/getting-started.html
_cat查询
GET请求
-
http://服务器IP地址:9200/_cat/nodes
: 查看节点- 127.0.0.1 55 96 3 0.02 0.06 0.92 dilm * 566714ae5bbd
-
http://服务器IP地址:9200/_cat/health
: 查看ES健康状态- 1624008550 09:29:10 elasticsearch green 1 1 3 3 0 0 0 0 - 100.0%
-
http://服务器IP地址:9200/_cat/master
:查看 主节点- sBbf_lLHTJm7IYf6nFx5Xw 127.0.0.1 127.0.0.1 566714ae5bbd
-
http://服务器IP地址:9200/_cat/indices
查看所有索引- green open .kibana_task_manager_1 c_Y-ebbvT3mhaDzDHaFyOw 1 0 2 0 38.3kb 38.3kb
green open .apm-agent-configuration B7k2J4H2TYKkAHq2wXGaUg 1 0 0 0 283b 283b
green open .kibana_1 b1ULLtKpTA2I9u5vGrf7_Q 1 0 7 0 25.2kb 25.2kb
- green open .kibana_task_manager_1 c_Y-ebbvT3mhaDzDHaFyOw 1 0 2 0 38.3kb 38.3kb
PUT,POST添加数据
PUT请求
-
http://服务器IP地址:9200/customer/external/1
-
携带json数据
{ "name":"tcl" }
-
响应结果
{ "_index": "customer", "_type": "external", "_id": "1", "_version": 1, "result": "created", "_shards": { "total": 2, "successful": 1, "failed": 0 }, "_seq_no": 0, "_primary_term": 1 }
索引是customer (类比数据库), 类型是external(类比表) ,文档id是1(类比记录),result表示创建
-
再次添加该请求,响应结果
{ "_index": "customer", "_type": "external", "_id": "1", "_version": 2, "result": "updated", "_shards": { "total": 2, "successful": 1, "failed": 0 }, "_seq_no": 1, "_primary_term": 1 }
result变为update
-
POST请求
-
http://服务器IP地址:9200/customer/external
-
携带json数据
{ "name":"cl" }
-
响应结果
{ "_index": "customer", "_type": "external", "_id": "HZB9HnoBPv1-CBBCXbNj", "_version": 1, "result": "created", "_shards": { "total": 2, "successful": 1, "failed": 0 }, "_seq_no": 3, "_primary_term": 1 }
随机生成文档ID
-
再次请求也是随机生成文档ID
-
PUT请求: 索引/类型/文档 是第一次添加则为添加数据否则为修改
POST请求: 可以不携带文档ID会随机生成,如果携带文档ID规则与PUT请求相同
GET查询数据与乐观锁
查询
http://服务器IP地址:9200/customer/external/1
+ GET请求
响应结果
{
"_index": "customer",
"_type": "external",
"_id": "1",
"_version": 3,
//_seq_no与_primary_term一同充当乐观锁 并发修改时先比较,比较相同才修改
"_seq_no": 2,
"_primary_term": 1,
"found": true,
//值
"_source": {
"name": "cl"
}
}
乐观锁
http://服务器IP地址:9200/customer/external/1?if_seq_no=2&if_primary_term=1
乐观锁if_seq_no=2&if_primary_term=1
随后 seq_no 被改变 如果有其他请求也要修改文档1 之前的序列化就不对了 就需要重查
PUT,POST修改数据
PUT,POST修改数据在添加数据时说明过,多次请求已有的文档就是修改
POST
http://服务器IP地址:9200/customer/external/1/_update
添加了新的json数据age
第一次请求
第二次请求 会与上一次对比 响应没增加版本号
POST 带 _update 请求 会比上次进行对比,其他修改数据的请求则不会(每次都增加版本号)
POST 带 _update 请求 还可以多增加数据
删除文档/索引
DELETE
只能删除文档或索引,不能删除类型
批量增删改查BULK
_bulk
必须是POST请求
在kibana下测试
批量操作索引
create是创建 index没则创建有则覆盖
测试数据
https://raw.githubusercontent.com/elastic/elasticsearch/7.4/docs/src/test/resources/accounts.json
POST bank/account/_bulk7
下文将对测试数据进行 ElasticSearch 基本使用