docker 安装 elasticsearch 入门

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

一 基本概念

index (索引)

动词,相当于Mysql中的insert 名词,相当于Mysql中的Database

Type (类型)

在index(索引)中,可以定义一个或者多个类型。 类似于mysql 中的 table;每一种类型的数据放在一起。

Document (文档)

保存在某个 Index(索引)下,某种 Type(类型)的一个数据,Document(文档)是JSON格式的,Document 就像是 MySQL 中某个 Table 里面每一行的数据,字段就是Document里的属性。

ed7756622b1e41f12695dead8d19de4.png

倒排索引(多维护一张索引表)

image.png

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 地址 (出现以下结果说名成功)

image.png

设置开机自启

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 查看日志

image.png 解决办法:执行查看ES内网IP地址

 docker inspect elasticsearch  |grep IPAddress
复制代码

image.png

访问 http://192.168.10.220:5601/ 出现下面成功

image.png

docker update kibana --restart=always 设置开机自启
复制代码

常用命令 _cat (都是get请求)

_cat/nodes  -- 查看所有节点
_cat/master  -- 查看主节点信息
_cat/health  -- 查看es的健康状况
_cat/indices -- 查看所有索引
复制代码

image.png 这里就不 演示所有的了

新添加一条数据(PUT带上ID就是更新(必须带上ID) , POST(可以不带ID 不带就是插入,带上多次提交就是更新)不带就是插入)

image.png

获取上一步插入的数据 GET请求

http://192.168.10.220:9200/customer/external/1
复制代码

image.png

{
    "_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

image.png post 不带 _update

image.png

猜你喜欢

转载自juejin.im/post/7082576671706415112