十二、ElasticSearch和Kibana安装及入门--谷粒商城

发布时间 2023-07-11 13:08:40作者: 93丶Fss

ElasticSearch

官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html

官方中文:https://www.elastic.co/guide/cn/elasticsearch/guide/current/foreword_id.html

社区中文: https://es.xiaoleilu.com/index.html http://doc.codingdict.com/elasticsearch/0/

概念就跳过了,需要的可以找文档看看,提取码:yyds

直接上安装教程

1、下载镜像文件

 这个的版本是跟着视频来的,我自己的改成了7.6.2

docker pull elasticsearch:7.4.2 存储和检索数据
docker pull kibana:7.4.2 可视化检索数据

2、创建实例

复制的时候一定要注意双引号还有http.host:和0.0.0.0中间有一个空格,不然会启动失败。

mkdir -p /mydata/elasticsearch/config
mkdir -p /mydata/elasticsearch/data
echo "http.host: 0.0.0.0" >> /mydata/elasticsearch/config/elasticsearch.yml
chmod -R 777 /mydata/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
http.host: 0.0.0.0 : es可以被远程任何机器访问
-e:配置参数
-p:暴露端口-9200是我们给es的restAPI发请求的端口-9300是es在分布式集群状态下的节点通信端口
discovery.type:单节点模式
ES_JAVA_OPTS:不指定的话es一启动会将内存全部占用,虚拟机就卡死了
-d:后台启动

查看日志:

docker logs elasticsearch

访问:

http://192.168.56.10:9200

Kibana(视频的是7.4.2,我自己的是7.6.2)

docker run --name kibana -e ELASTICSEARCH_HOSTS=http://192.168.56.10:9200 -p 5601:5601 \ -d kibana:7.4.2
//192.168.56.10:9200这个需要改成自己的虚拟地址,我的是把虚拟地址改成跟视频的一样才用这个

访问:

http://192.168.56.10:5601

 启动后效果如上

 

最后设置开机自启动    (update后面可以用dockers ps -a 里的id也可以的)

docker update kibana --restart=always      

docker update elasticsearch --restart=always

 

 

 

 

Elasticsearch-使用入门

因为Elasticsearch 都是通过 REST API 接口来操作数据的,所以演示他们也需要通过接口的请求。
_cat
1. /_cat/nodes:查看所有节点
接口:GET http://192.168.56.10:9200/_cat/nodes

 2. /_cat/health:查看ES健康状况

接口:get http://192.168.56.10:9200/_cat/health

 3. /_cat/master:查看主节点信息

接口:get http://192.168.56.10:9200/_cat/master

4. /_cat/indicies:查看所有索引

接口:get http://192.168.56.10:9200 /_cat/indicies

 

创建一个索引

接口:PUT http://192.168.56.10:9200/{{index_name}}

PUT 接口具有幂等性,多次请求不会重复创建,且只支持 PUT 请求。

索引一个文档

即保存一条数据,保存在哪个索引的哪个类型下,指定用哪个唯一标识。

1. PUT 请求

接口:PUT http://192.168.56.10:9200/customer/external/1

2. POST 请求

接口:POST http://192.168.56.10:9200/customer/external/

PUT和POST都可以 
POST新增,如果不指定id,会自动生成id。指定id就会修改这个数据,并新增版本号;
PUT可以新增也可以修改。PUT必须指定id;由于PUT需要指定id,我们一般用来做修改操作,不指定id会报错。

查看文档

/index/type/id

接口:GET http://192.168.56.10:9200/customer/external/1

更新文档

/index/type/id/_update

接口:POST http://192.168.56.10:9200/customer/external/1/_update

 

 

几种更新文档的区别

在上面索引文档即保存文档的时候介绍,还有两种更新文档的方式:

 当PUT请求带id,且有该id数据存在时,会更新文档;

当POST请求带id,与PUT相同,该id数据已经存在时,会更新文档; 这两种请求类似,即带id,且数据存在,就会执行更新操作。

类比:

请求体的报文格式不同,_update方式要修改的数据要包裹在 doc 键下

_update方式不会重复更新,数据已存在不会更新,版本号不会改变,另两种方式会重复更新(覆盖原来数据),版本号会改变

这几种方式在更新时都可以增加属性,PUT请求带id更新和POST请求带id更新,会直接覆盖原来的数据,不会在原来的属性里面新增属性

 

 

删除文档&索引

删除文档

接口:DELETE http://192.168.56.10:9200/customer/external/1

删除索引

接口:DELETE http://192.168.56.10:9200/customer

bulk-批量操作数据

语法格式:

{action:{metadata}}\n   // 例如index保存记录,update更新
{request body  }\n
{action:{metadata}}\n
{request body  }\n

1. 指定索引和类型的批量操作

接口:POST /customer/external/_bulk

参数:

{"index":{"_id":"1"}}
{"name":"John Doe"}
{"index":{"_id":"2"}}
{"name":"John Doe"}

2. 对所有索引执行批量操作

接口:POST /_bulk

参数:

{"delete":{"_index":"website","_type":"blog","_id":"123"}}
{"create":{"_index":"website","_type":"blog","_id":"123"}}
{"title":"my first blog post"}
{"index":{"_index":"website","_type":"blog"}}
{"title":"my second blog post"}
{"update":{"_index":"website","_type":"blog","_id":"123"}}
{"doc":{"title":"my updated blog post"}}