IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Elasticsearch和kibana -> 正文阅读

[大数据]Elasticsearch和kibana

一.docker安装

1、下载镜像文件

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

2 、创建实例
?(1)安装ElasticSearch
????????mkdir -p /mydata/elasticsearch/config
????????mkdir -p /mydata/elasticsearch/data
? ?(mkdir创建了目录,如果创建一级目录使用mkdir就可以了,创建多级目录使用mkdir -p才行)
? ? ? ? 执行上面两行后可见:

????????echo "http.host: 0.0.0.0" >> /mydata/elasticsearch/config/elasticsearch.yml
(http.host: 0.0.0.0使es可以被任何机器访问。echo "..." >> 被写入的位置)
? ? ? ? 执行上面一行后可见:
????????
????????chmod -R 777 /mydata/elasticsearch/? ? ? ? ?使任何组的任何成员对 /mydata/elasticsearch/ 目录下的所有文件都是可读可写可执行。保证权限

????????docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
(此处- p作用是端口映射,9200端口用于es的http请求,9300是es分布式集群状态下节点之间的通信端口)
????????
????????-e "discovery.type=single-node" \
(设置以单节点运行)
????????-e ES_JAVA_OPTS="-Xms64m -Xmx512m" \
(如果不指定,es一启动会把内存全部占用,虚拟机直接卡死。初始64m,最大512m)
????????
????????-v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
(- v参数用于挂载或者说关联。以后修改左面的也就修改了右面的配置)
????????-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \
????????-v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
????????-d elasticsearch:7.4.2
(- d为后台启动,使用es:7.4.2版本)
以后再外面装好插件重启即可;
特别注意:
-e ES_JAVA_OPTS="-Xms64m -Xmx256m" \ 测试环境下,设置 ES 的初始内存和最大内存,否则导
致过大启动不了 ES
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

执行上面一串代码后,查看一下:可见启动完成

windows浏览器访问:192.168.23.130:9200? ? ? ? 可见下图,可见已完成

docker logs elasticsearch(也可以使用docker logs 容器id。容器id通过docker ps 查看):若上方出错可用此命令查看es日志判断哪里出错,当然我们这里我没有出错。

(2)安装Kibana
注意:操作ES也就是给它请求,postman也行。安装Kibana是让其在web端有可视化界面,且kibana还有其他小的优点。
docker run --name kibana -e ELASTICSEARCH_HOSTS= http://192.168.23.130:9200 -p 5601:5601 \
-d kibana:7.4.2
http://192.168.56.10:9200 一定改为自己虚拟机的地址
安装且启动后可见如图:

windows浏览器访问:192.168.23.130:5601? ? ? ? 可见下图,可见已完成。

二.初步检索

注意:索引就是数据库。类型就是数据库表。文档就是表字段。其中类型的概念并不重。

这里 Types 的概念已经被逐渐弱化,Elasticsearch 6.X 中,一个 index 下已经只能包含一个

type,Elasticsearch 7.X 中, Type 的概念已经被删除了。

1._cat(查询系统信息)

查看es的健康状况

?查看主节点信息:

查看所有索引:

?查看所有节点:

?2、索引一个文档(增加)

来自于别处:
保存一个数据,保存在哪个索引的哪个类型下(即mysql的哪个数据库的哪张表下),指定用哪个唯一标识。
PUT customer/external/1: customer 索引下的 external 类型下保存 1 号数据为

PUT customer/external/1
{
"name": "John Doe"
}
PUT POST 都可以,
POST 新增。如果不指定 id ,会自动生成 id 。指定 id 就会修改这个数据,并新增版本号
PUT 可以新增可以修改。 PUT 必须指定 id ;由于 PUT 需要指定 id ,我们一般都用来做修改
操作,不指定 id 会报错。
自己总结:
请求方式为:PUT? ? ? ?
URI:192.168.23.130:9200/ customer/external/1
body内容JSON格式:
{
"name": "John Doe"
}
注意:PUT请求方式同一请求发送多次为更新操作
执行后返回的数据:

{

????"_index":?"customer",? ? ? ? // 数据库

????"_type":?"external",? ? ? ? ? ? // 数据库表

????"_id":?"1",? ? ? ? ? ? ? ? ? ? ? ? ? // 唯一标识

????"_version":?1,? ? ? ? ? ? ? ? ? // 执行一次就加1

????"result":?"created",? ? ? ? ? ?// 第二次执行为updated

????"_shards":?{? ? ? ? ? ? ? ? ? ? ? // 分片

????????"total":?2,

????????"successful":?1,

????????"failed":?0

????},

????"_seq_no":?0,

????"_primary_term":?1

}

请求方式为:POST? ? ?
URI:192.168.23.130:9200/ customer/external/
????????
????????192.168.23.130:9200/ customer/external/1? ? ? ? (1表示其id,其他数字也可以)
body内容JSON格式:
{
"name": "John Doe"
}

(1)若URI:192.168.23.130:9200/customer/external/

注意:上方URI执行,POST?请求方式同一请求发送多次依旧是添加操作,且每一次执行都会自动创造一个唯一id。

执行后返回的数据:

{

????"_index":?"customer",

????"_type":?"external",

????"_id":?"zRmrZn0B_qCPj000W49i",? ? ? ? // 自动生成的唯一id

????"_version":?1,

????"result":?"created",

????"_shards":?{

????????"total":?2,

????????"successful":?1,

????????"failed":?0

????},

????"_seq_no":?1,

????"_primary_term":?1

}

(2)若URI:192.168.23.130:9200/ customer/external/1????????(1表示其id,其他数字也可以)
注意:此时多次执行为更新

{

????"_index":?"customer",

????"_type":?"external",

????"_id":?"2",

????"_version":?1,

????"result":?"created",

????"_shards":?{

????????"total":?2,

????????"successful":?1,

????????"failed":?0

????},

????"_seq_no":?3,

????"_primary_term":?1

}

若带id,PUT和POST请求为一次新增,多次修改。POST可以不带id,不带id多次都为新增
3.查询文档(查找)
GET customer/external/1
自己总结:
请求方式为:GET??
URI:192.168.23.130:9200/ customer/external/1? ? ? ? 查询数据库customer下的数据库表external下的1号数据

结果:
{
????????"_index": "customer", ????????//在哪个索引
????????"_type": "external",? ? ? ? ? ? //在哪个类型
????????"_id": "1",? ? ? ? ? ? ? ? ? ? ? ? ? ?//记录 id
????????"_version": 2, ????????????????????//版本号
????????"_seq_no": 1,? ? ? ? ? ? ? ? ? ? ?//并发控制字段,每次更新就会+1,用来做乐观锁
????????"_primary_term": 1,? ? ? ? ? ?//同上,主分片重新分配,如重启,就会变化
????????"found": true,? ? ? ? ? ? ? ? ? ? ? ? // true为找到了数据
????????"_source": { ????????????????//真正的内容
????????????????"name": "John Doe"
????????}
}
乐观锁字段的测试:
????????更新携带 ?if_seq_no=0&if_primary_term=1
执行前:

执行后:

返回结果:

{

????"_index":?"customer",

????"_type":?"external",

????"_id":?"1",

????"_version":?3,

????"result":?"updated",

????"_shards":?{

????????"total":?2,

????????"successful":?1,

????????"failed":?0

????},

????"_seq_no":?4,

????"_primary_term":?1

}

4.更新文档(修改)
POST customer/external/1/_update
{
????????"doc":{
????????"name": "John Doew"
????????}
}
或者
POST customer/external/1
{
????????"name": "John Doe2"
}
或者
PUT customer/external/1
{
????????"name": "John Doe"
}
1.不同: POST 操作会对比源文档数据,如果相同不会有什么操作,文档 version 不增加
PUT 操作总会将数据重新保存并增加 version 版本;
????????带_update 对比元数据如果一样就不进行任何操作。
????????看场景;
????????对于大并发更新,不带 update
????????对于大并发查询偶尔更新,带 update ;对比更新,重新计算分配规则。
2.更新同时增加属性
POST customer/external/1/_update
{
????????"doc": { "name": "Jane Doe", "age": 20 }
}
PUT POST 不带 _update 也可以
5 、删除文档 & 索引
ES中类型(数据库表)的概念不深刻,没有删除这个的方法。
DELETE customer/external/1
DELETE customer
6. bulk 批量 API
POST /customer/external/_bulk
{"index":{"_id":"1"}}
{"name": "John Doe" }
{"index":{"_id":"2"}}
{"name": "Jane Doe" }
语法格式:
{ action: { metadata }}\n
{ request body
}\n
{ action: { metadata }}\n
{ request body
}\n
复杂实例:
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", "_retry_on_conflict" : 3} }
{ "doc" : {"title" : "My updated blog post"} }
bulk API 以此按顺序执行所有的 action (动作)。如果一个单个的动作因任何原因而失败,
它将继续处理它后面剩余的动作。当 bulk API 返回时,它将提供每个动作的状态(与发送
的顺序相同),所以您可以检查是否一个指定的动作是不是失败了。
(1)批量新增
POST /customer/external/_bulk
{"index":{"_id":"1"}}
{"name": "John Doe" }
{"index":{"_id":"2"}}
{"name": "Jane 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", "_retry_on_conflict" : 3} 
}
{ "doc" : 
    {"title" : "My updated blog post"} 
}

运行结果见下图:

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-11-29 16:23:14  更:2021-11-29 16:23:44 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 7:56:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码