[DB] ElasticSearch
安装
- root用户解压,修改配置文件
- 创建新用户es
- 修改文件权限:chown -R es:es /kkb/install/elasticsearch-6.7.0/
- 用es用户启动ElasticSearch和kibana
- kibana启动:nohup bin/kibana >/dev/null 2>&1 &
概念
- Relational DB:Databases -> Tables -> Rows -> Columns
- Elasticsearch:Indices -> Types -> Documents -> Fields
- 索引(Indices):对应MySQL中的库
- 类型(Types):对应MySQL中的表
- 文档(Documents):对应MySQL中的行
- 字段(Fields):对应MySQL中的列
- 映射(mapping):定义数据类型
- 分片(shards):将索引划分为多份,可以存放在任何节点上(每个索引默认5个)
- 复制(replicas):分片的拷贝,防止数据丢失(每个索引默认1个)
与DB差异
- ES不是关系数据库,不具备ACID特性,乐观锁VS乐观锁
- ES是近似实时数据库,不是实时数据库,内部基于refresh机制更新
- SQL VS Nosql
- 任何两个异构数据库同步都会有问题,一致性,实时性
与DB混搭
- DB全能(ACID),ES专长(海量查询)
- 技术需求
- 大数据量查询/关联查询,两个表作join,难以优化
- 弹性扩展能力,大宽表
- 业务需求
- 业务领域复杂度,水平分库分表
- 业务查询要求,多业务线联合查询
单数据表,单索引
- ES作为DB的映射
- DB作为数据源
- ES为查询引擎
单数据表,多索引
- 同一DB表成为多个索引的数据
多数据表,单索引
- 多个DB表
- 一个索引
- 大宽表
多数据表,多索引
- 多DB表映射多索引
多数据源表,多索引
- 多种数据源
- 多种索引
- Sql/Nosql
同步模式
- 推Push:数据源主动推送
- 拉Pull:数据目标主动拉取
- 推拉结合Push+Pull
应用双写
应用异步双写MQ
- 推拉结合
- 早期基于Lucene搜索
- 自主灵活
- 耦合高
工具
- Logstash
- 拉Pull
- JDBC+CRON
- 单进程
Apache NiFi
- 上百节点,一天200TB
- 将Logstash平台化
SDC
CDC(Change Data Capture)
- 推Push
- 基于数据库底层同步机制
- Mysql-binlog
自主开发同步程序
多数据源
多数据源数据交换
- 没有统一解决方案
常用数据库
- 关系数据库(MySQL)
- 缓存(Redis)
- ES
操作
- curl :在命令行下面访问url的工具,可以简单实现常见的get/post请求。centos默认库里面是有curl工具,如果没有可通过yum安装
- -X 指定http的请求方法 有HEAD GET POST PUT DELETE
- -d 指定要传输的数据
- -H 指定http请求头信息
- restful:在kibana中操作
- java api
命令
- curl
curl -XPUT http://node01:9200/blog01/?pretty
curl -XPUT http://node01:9200/blog01/article/1?pretty -d '{"id": "1", "title": "What is lucene"}'
curl -XGET http://node01:9200/blog01/article/1?prettycurl -XPUT http://node01:9200/blog01/article/1?pretty -d '{"id": "1", "title": " What is elasticsearch"}'
curl -XGET "http://node01:9200/blog01/article/_search?q=title:elasticsearch"
curl -XDELETE "http://node01:9200/blog01/article/1?pretty"
curl -XDELETE http://node01:9200/blog01?pretty
- 增加数据(批量)
POST /school/student/_bulk
{ "index": { "_id": 1 }}
{ "name" : "liubei", "age" : 20 , "sex": "boy", "birth": "1996-01-02" , "about": "i like diaocan he girl" }
{ "index": { "_id": 2 }}
{ "name" : "guanyu", "age" : 21 , "sex": "boy", "birth": "1995-01-02" , "about": "i like diaocan" }
- 查询(全部)
GET /school/student/_search?pretty
{
"query": {
"match_all": {}
}
}
- 查询(关键字)
GET /school/student/_search?pretty
{
"query": {
"match": {"about": "travel"}
}
}
- mapping定义字段类型
DELETE school
PUT school
{
"mappings": {
"logs" : {
"properties": {"messages" : {"type": "text"}}
}
}
}
POST /school/_mapping/logs
{
"properties": {"number" : {"type": "text"}}
} GET /school/_mapping/logs
- 管理分片和副本数
DELETE document
PUT document
{
"mappings": {
"article" : {
"properties":
{
"title" : {"type": "text"} ,
"author" : {"type": "text"} ,
"titleScore" : {"type": "double"} }
}
}
} GET /document/_settings
PUT /document/_settings
{
"number_of_replicas": 2
}
分片数初始定义后无法修改
参考
安装
https://cloud.tencent.com/developer/article/1595027
root用户无法启动
https://www.cnblogs.com/tree1123/p/13152267.html
hive数据存入ES
http://www.bubuko.com/infodetail-3047662.html
elasticsearch-head安装
https://www.chajianmi.com/topic/ffmkiejjmecolpfloofpjologoblkegm#download
https://blog.csdn.net/boss_way/article/details/105826584
基本操作
https://www.cnblogs.com/leohahah/p/10310214.html
分片异常
https://www.cnblogs.com/carryLess/p/9452000.html
kibana
https://blog.csdn.net/baidu_24545901/article/details/79031291
ES与Hive集成
https://blog.csdn.net/tototuzuoquan/article/details/102601040
Spark将Hive数据写入ES(将hive离线计算的结果通过spark任务导入es中以便业务功能快速查询)
https://blog.csdn.net/LXWalaz1s1s/article/details/109264520
SparkStreaming--Kafka--Hive--ES
https://blog.csdn.net/m0_37592814/article/details/105027815?
[DB] ElasticSearch的更多相关文章
- Docker部署ElasticSearch以及使用
ElasticSearch笔记 1. ElasticSearch前期 1.1 聊聊ElasticSearch的简介 Elaticsearch,简称为es, es是一个开源的高扩展的分布式全文检索引 ...
- SpringBoot进阶教程(七十三)整合elasticsearch
Elasticsearch 是一个分布式.高扩展.高实时的搜索与数据分析引擎.它能很方便的使大量数据具有搜索.分析和探索的能力.充分利用Elasticsearch的水平伸缩性,能使数据在生产环境变得更 ...
- elasticSearch 7.6.1 入门及elasticSearch整合springboot
一.ElasticSearch概述 官网:https://www.elastic.co/cn/downloads/elasticsearch Elaticsearch,简称为es,es是一个开源的高扩 ...
- Maven私服Nexus3.x环境构建操作记录
Maven介绍Apache Maven是一个创新的软件项目管理和综合工具.Maven提供了一个基于项目对象模型(POM)文件的新概念来管理项目的构建,可以从一个中心资料片管理项目构建,报告和文件.Ma ...
- GrayLog + Logspout + Docker 实现分布式日志聚合
前提条件:你的服务器上已经安装了Docker和Docker Compose 一.安装GrayLog(Docker方式) version: '2' services: mongodb: image: m ...
- Linux下Maven私服Nexus3.x环境构建操作记录【转】
Maven介绍Apache Maven是一个创新的软件项目管理和综合工具.Maven提供了一个基于项目对象模型(POM)文件的新概念来管理项目的构建,可以从一个中心资料片管理项目构建,报告和文件.Ma ...
- nexus3
Maven 介绍 Apache Maven 是一个创新的软件项目管理和综合工具. Maven 提供了一个基于项目对象模型(POM)文件的新概念来管理项目的构建,可以从一个中心资料片管理项目构建,报告和 ...
- DevOps - 项目私库 - Nexus Repository
相关链接 Sonatype官网:https://www.sonatype.com Products: Nexus Repository OSS2.x & 3.x Documentation: ...
- Centos7 搭建最新 Nexus3 Maven 私服
Maven 介绍 Apache Maven 是一个创新的软件项目管理和综合工具.Maven 提供了一个基于项目对象模型(POM)文件的新概念来管理项目的构建,可以从一个中心资料片管理项目构建,报告和文 ...
随机推荐
- ls(list)命令详解及生产使用示例
文件有文件名与数据,在linux上被分为两个部分:用户数据(user data)与元数据(metadata) 用户数据,即文件数据块(data block),数据块是记录文件真实内容的地方,我们将其称 ...
- 微信小程序getUserProfile适配方案
清明节放假前一天 群里突然炸锅,说小程序所有用的昵称全部变成了微信昵称 当时我就 特么不是说好13号吗??? 吓得我赶紧爬起来翻文档(需要代码直接往后翻) wx.getUserProfile(Obje ...
- 你真的了解Innodb存储引擎?
前言 前几篇记录了如何查看SQL执行计划.数据库事务相关的知识点 除了这两个,数据库还有两个是非常重要的,必须要考的 就是存储引擎和索引 今天先记录以下InnoDB存储引擎相关的知识点 MySQL存储 ...
- C++实现控制台学生学籍管理系统
操作流程 创建文件 创建管理类 管理类负责的内容如下: 提供与用户的沟通菜单界面 实现对职工增删改查的操作 数组数据与文件的读写交互 菜单功能实现 在StudentManager.h中定义Show ...
- Chrome/Chromium的实验性功能+扩展推荐,让你的Chrome/Chromium起飞!
1 实验性功能 Chrome/Chromium内置了一些很酷的实验性功能,打开 chrome://flags 即可访问.打开这些实验性功能后,浏览器的使用体验会更好,这里Chrome的版本为80.0. ...
- (十五)VMware Harbor 标签管理
1. Harbor提供两种标签用来隔离各种资源(目前只有镜像): 全局级别标签: 由系统管理员管理,用于管理整个系统的镜像.它们可以添加到任何项目下的镜像中. 项目级别标签: 由项目管理员或者系统管理 ...
- JavaScript 简写技巧
1. 声明变量 //普通写法 let x; let y = 20; //简写 let x, y = 20; 2. 给多个变量赋值 //普通写法 let a, b, c; a = 5; b = 8; c ...
- [源码分析]并行分布式任务队列 Celery 之 子进程处理消息
[源码分析]并行分布式任务队列 Celery 之 子进程处理消息 0x00 摘要 Celery是一个简单.灵活且可靠的,处理大量消息的分布式系统,专注于实时处理的异步任务队列,同时也支持任务调度.在前 ...
- 记一次 .NET 某教育系统API 异常崩溃分析
一:背景 1. 讲故事 这篇文章起源于 搬砖队大佬 的精彩文章 WinDBg定位asp.net mvc项目异常崩溃源码位置 ,写的非常好,不过美中不足的是通览全文之后,总觉得有那么一点不过瘾,就是没有 ...
- 额!Java中用户线程和守护线程区别这么大?
在 Java 语言中线程分为两类:用户线程和守护线程,而二者之间的区别却鲜有人知,所以本文磊哥带你来看二者之间的区别,以及守护线程需要注意的一些事项. 1.默认用户线程 Java 语言中无论是线程还是 ...