首页 > 技术文章 > 【数据库】Redis/MongoDB/MySQL/Oracle/ES/Cassandra随笔索引

z00377750 2018-10-30 10:52 原文

数据库体系

【思维导图】数据库体系
密码: a8ni

Redis

【Redis】Redis中文官方

【Redis】Redis基础知识
【Redis】缓存击穿、雪崩、穿透
【Redis】集群高可用、哨兵、持久化、LRU
【Redis】分布式锁、并发竞争、双写一致性
【Redis】Redis常见面试题
【Redis】布隆过滤器(BloomFilter)
【Redis】秒杀系统设计
【Redis】知识点思维导图

【Redis】Redis五大数据类型的常用操作
【Redis】Redis事务

JPA

分库分表、读写分离

【分库分表】为什么要分库分表,方案是什么
【分库分表】数据库分库分表和带来的唯一ID、分页查询问题的解决
【分库分表】分库分表的几种常见玩法及如何解决跨库查询等问题
支撑日活百万用户的高并发系统,应该如何设计其数据库架构?

ElasticSearch

ELK安装

【ES】ELK安装
【ES】Elasticsearch 7.x 最详细安装及配置
【ES】Download Elasticsearch
【ES】Download Logstash
【ES】Download Kibana

ES基础

【ES】【推荐】【狂神说Java】ElasticSearch7.6.x最新完整教程通俗易懂
【ES】【推荐】【慕课】Springboot + ElasticSearch 构建博客检索系统
【ES】【慕课】ElasticSearch 入门
【ES】ELK官方介绍
【ES】【推荐】ES使用博客
【ES】Elasticsearch入门(五):Elasticsearch基础概念与基本操作
【ES】Elasticsearch 7.x 之文档、索引和 REST API 【基础入门篇】

下面是ES6的基本的基本操作,包括 索引、文档、查询的ES API及Java API操作,除了个别类和方法在ES7中过时,其他内容很有参考价值,可重点查阅
【ES 6.5.4】ElasticSearch知识点

Java操作ES

【ES】ElasticSearch学习笔记(6)· Java操作Elasticsearch7.6.1

【ES】ES 客户端官方文档-支持Java的客户端包括Java Api和REST Client

TransportClient过时了,而RestHighLevelClient还不完善,还需要增加新API,但是RestLowLevelClient非常完善,满足我们的API需求

【ES】JAVA操作ES-Elasticsearch6中Java Low Level REST Client和Java High Level REST Client使用

关于ElasticSearch Java API的选择,如果ElasticSearch版本在6.x以前的话,推荐使用JestClient。如果是6.x之后并且有意升级到7.x的话,那么直接使用ES官方的Java High Level REST Client,因为在7.x之后将直接会舍弃Transport client的连接方式,目前Spring和SpringBoot集成的ES就是使用该方式(不知后续是否会做调整)。

【ES】ElasticSearch的JAVA API使用教程

java的es客户端有两种Java REST Client和Java API,Java REST Client分为Java Low Level REST Client和Java High Level REST Client,Java API分为Node Client和Transport Client
为什么不用spring-data-elasticsearch(即ElasticSearchRepository和ElasticSearchTemplate),因为它底层的客户端是Transport Client和Node Client,在Java API中,官方明确表示了Transport Client7.x开始不推荐,8.x开始废除,推荐使用Java REST Client。不过新版的spring-data-elasticsearch已经支持Java High Level REST Client,如果项目的Spring boot和Elasticsearch的版本符合最新的spring-data-elasticsearch的要求,优先使用spring-data-elasticsearch。

【ES】ElasticSearch6.5.4<四>java如何使用ES

综上,Java中操作ES,推荐使用Java Low Level REST Client和Java High Level REST Client,后者不完善的接口可以通过前者弥补,后者使用更方便。如果使用的是Spring Boot,则可以进一步使用Spring Data Elasticsearch 提供的High Level REST Client进行操作。

ES的基本知识:
mysql数据库可以分为:数据库(database) ->表(table) -> 行(row)->列(column)
ES相应也分为:  索引(index)->类型(type)->文档(document)->字段(field)

具体的对应规则如下:
Relational DB -> Database-> Table -> Row -> Column
Elasticsearch -> Index -> Type -> Document-> Field

注: 
关于type
6.版本中type已过时, 并且当前版本只能建一个type
7.
版本将删除type, 所以在开发过程中弱化type的概念

索引是含有相同属性的文档集合。索引在ES中是通过一个名字来识别的,且必须是英文字母小写,且不含中划线(-);可类比于 MySQL 中的 database ;但是,后文会提到,在 7.0中,由于类型(Type)的移除,我们可以理解为,一个索引就是一张 table。

【ES】Elasticsearch入门(六):SpringBoot整合Elasticsearch项目搭建,基础实战(rest-high-level-client)

【ES】SpringBoot操作Elasticsearch
不再推荐使用JestClient操作ES,推荐Java High Level REST Client
【ES】SpringBoot 使用JestClient操作Elasticsearch
【ES】23个最有用的ES检索技巧(Java API实现)

关联关系

下面是中文版本2.x的ES的官方文档对关联关系的解释,由此熟悉ES对关系的处理,以及了解与关系型数据库的区别。同时由该章节描述可以推导出如何将一对多等关联关系在ES中存储和查询
【ES】Elasticsearch: 权威指南 » 数据建模 » 关联关系处理
【ES】Elasticsearch多表关联设计指南

应用

【ES】利用java多线程技术往Elasticsearch导入亿级数据
【ES】Elasticsearch 在互联网公司大量真实的应用案例
【ES】Elasticsearch多表关联设计指南
【ES】Elasticsearch 7.x Nested 嵌套类型查询
【ES】Logstash同步mysql一对多数据到ES(踩坑日记系列)

同步数据库到ES

目前该领域比较牛的插件有:
1)、elasticsearch-jdbc,严格意义上它已经不是第三方插件。已经成为独立的第三方工具。https://github.com/jprante/elasticsearch-jdbc
2)、elasticsearch-river-mysql插件 https://github.com/scharron/elasticsearch-river-mysql
3)、go-mysql-elasticsearch(国内作者siddontang) https://github.com/siddontang/go-mysql-elasticsearch
但是目前只有go-mysql-elasticsearch还在维护,上面两个已经有几年没有维护了,不建议使用。但是最后一个插件不支持表结构修改,同时不支持物理删除同步。
4)、logstash-input-jdbc:Logstash官方插件 github地址 https://github.com/logstash-plugins/logstash-input-jdbc 该插件在logstash 5.x版本之后已经默认安装,不需要额外再安装

【ES】Elasticsearch - Logstash实现mysql同步数据到elasticsearch
【ES】logstash同步mysql和es 删除除了软删除,有其他更好的办法吗?
【ES】logstash全量和增量同步数据到ES(包含多表同步)
【ES】利用Logstash同步ORACLE数据至ES
【ES】ElasticSearch + Logstash进行数据库同步
【ES】和我一起打造个简单搜索之Logstash实时同步建立索引
【ES】Logstash JDBC实现Elasticsearch与关系型数据库保持数据同步
【ES】logstash 同步时间差8小时
【ES】logstash 同步去掉logstash生成的@version @timestamp字段
【Q】Logstash Oracle同步设置
【ES】elasticsearch-jdbc填坑记

下面同步表结构使用了elasticsearch-river-jdbc插件,但是该插件已经有几年没有维护了,也不建议使用。

【ES】(elasticsearch-river-jdbc)ElasticSearch与MySQL数据同步-表结构修改后同步到ES

原理

【ES】Elasticsearch Lucene 数据写入原理 | ES 核心篇
【ES】Elasticsearch 6.3.2 启动过程

实战

【ES】【狂神说Java】代码样例
【ES】【狂神说Java】ElasticSearch7.6.x快速入门
【ES】【狂神说Java】ElasticSearch7.6.x最新完整教程通俗易懂笔记
【ES】【狂神说Java】ElasticSearch仿京东搜索实战SpringBoot项目
【ES】【千峰网】ES查询实例-github
【ES】【千峰网】2020年 最新版 Elasticsearch教学视频

官方指导翻译及总结(ES 7.8)

【ES】【Java High Level REST Client】官方索引和文档操作指导
【ES】【Java High Level REST Client】JAVA集成ES与基本操作及官方查询指导
【ES】【Reference 7.8 译】官方文档Mapping说明

官方文档

【Javadoc】Elasticsearch
【Javadoc】Java High Level REST Client

【Reference】Elasticsearch Reference
【Reference】Java High Level REST Client Reference

【Reference】Spring Data Elasticsearch

Cassandra

【Cassandra】Cassandra教程
【Cassandra】为什么选择cassandra

推荐阅读