一 基本概念
index (索引)
动词,相当于Mysql中的insert
名词,相当于Mysql中的Database
Type (类型)
在index(索引)中,可以定义一个或者多个类型。
类似于mysql 中的 table;每一种类型的数据放在一起。
Document (文档)
保存在某个 Index(索引)下,某种 Type(类型)的一个数据,Document(文档)是JSON格式的,Document 就像是 MySQL 中某个 Table 里面每一行的数据,字段就是Document里的属性。
倒排索引(多维护一张索引表)
docker 安装
docker pull elasticsearch:7.4.2 存储和检索数据
docker pull kibana:7.4.2 //可视化界面
配置数据挂载卷
# 创建配置文件目录
mkdir -p /mydata/elasticsearch/config
# 创建数据目录
mkdir -p /mydata/elasticsearch/data
# 将/mydata/elasticsearch/文件夹中文件都可读可写
chmod -R 777 /mydata/elasticsearch/
# 配置任意机器可以访问 elasticsearch
echo "http.host: 0.0.0.0" >/mydata/elasticsearch/config/elasticsearch.yml
启动Elasticsearch
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx512m" \
-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
-p 9200:9200 -p 9300:9300:向外暴露两个端口,9200用于HTTP REST API请求,9300 ES 在分布式集群状态下 ES 之间的通信端口;
-e "discovery.type=single-node":es 以单节点运行
-e ES_JAVA_OPTS="-Xms64m -Xmx512m":设置启动占用内存,不设置可能会占用当前系统所有内存
-v:挂载容器中的配置文件、数据文件、插件数据到本机的文件夹;
-d elasticsearch:7.6.2:指定要启动的镜像
访问服务器的9200 地址 (出现以下结果说名成功)
设置开机自启
docker update elasticsearch --restart=always
设置Kibana连接
docker run --name kibana \
-e ELASTICSEARCH_HOSTS=http://192.168.10.220:9200 \
-p 5601:5601 \
-d kibana:7.4.2
如果有多个网卡可能会出下链接不上
docker logs kibana 查看日志
解决办法:执行查看ES内网IP地址
docker inspect elasticsearch |grep IPAddress
访问 http://192.168.10.220:5601/ 出现下面成功
docker update kibana --restart=always 设置开机自启
常用命令 _cat (都是get请求)
_cat/nodes -- 查看所有节点
_cat/master -- 查看主节点信息
_cat/health -- 查看es的健康状况
_cat/indices -- 查看所有索引
这里就不 演示所有的了
新添加一条数据(PUT带上ID就是更新(必须带上ID) , POST(可以不带ID 不带就是插入,带上多次提交就是更新)不带就是插入)
获取上一步插入的数据 GET请求
http://192.168.10.220:9200/customer/external/1
{
"_index": "customer", //在那个索引
"_type": "external", //在那个类型
"_id": "1", //记录id
"_version": 1, //版本号
"_seq_no": 0, //并发控制字段,每次更新就会加一,用来做乐观锁。
"_primary_term": 1, //主分片重新分配就会变化
"found": true,
"_source": { //存储的类容
"name": "xiaoke"
}
}
更新数据
put 总是更新 叠加版本号
post 总是更新 叠加版本号
post带_update(对比版本 没有更新时不会叠加版本号)
post带_update
post 不带 _update