赞
踩
当系统数据量上了10亿、100亿条的时候,我们用什么数据库好?如何解决单点故障?如何提升检索速度?如何解决统计分析问题?
传统数据库的应对解决方案
通过主从备份解决数据安全性问题; 通过数据库代理中间件心跳监测,解决单点故障问题; 通过代理中间件将查询语句分发到各个slave节点进行查询,并汇总结果
非关系型数据库
通过副本备份保证数据安全性; 通过节点竞选机制解决单点问题; 先从配置库检索分片信息,然后将请求分发到各个节点,最后由路由节点合并汇总结果
另辟蹊径
存储数据时按有序存储; 将数据和索引分离; 压缩数据;
于是,Elastic Search就在这种背景下诞生了
Elastic Search 简称ES,是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。
ES
与 Lucene
的关系Lucene
只是一个库。想要使用它,你必须使用Java来作为开发语言并将其直接集成到你的应用中,更糟糕的是,Lucene
非常复杂,你需要深入了解检索的相关知识来理解它是如何工作的
ES也使用Java开发并使用 Lucene
作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的 RESTful API
来隐藏 Lucene
的复杂性,从而让全文搜索变得简单
解压 elasticsearch-7.6.2-windows-x86_64.zip
Kibana
解压 kibana-7.6.2-windows-x86_64.zip
修改配置
elasticsearch.hosts: ["http://localhost:9200"]
IK Analyzer
进入 elasticsearch-7.6.2\plugins
目录
创建文件夹 ik
将 elasticsearch-analysis-ik-7.6.2.zip
拷贝至 ik
目录下,然后解压
结构说明:
ES中的索引(index)相当于 MySQL
中的数据库(database),但ES7
之后建议每个索引下只存放一种类型(type)
ES中的数据分片(shard)是特有的,在集群模式下,海量的数据可以分别存储在不同的分片中,每个分片都有备份数据,其备份数据称为replica,备份数据的主要作用就是在主分片数据不可用的情况下,会将备份数据(replica)作为新的主分片使用
ES中的类型(type)相当于 MySQL
中的表(table)
ES中的文档(document)相当于 MySQL
中的表的一行数据(row)
ES中的字段(field)相当于 MySQL
中的表的字段(field)
text:一把被用于全文检索。 将当前Field进行分词。
keyword:当前Field不会被分词。
long:占用8个字节
integer:占用4个字节
short:占用2个字节
byte:占用1个字节
double:占用8个字节
float:占用4个字节
long_range:赋值时,无需指定具体的内容,只需要存储一个范围即可,指定gt,lt,gte,lte
integer_range:同上
double_range:同上
float_range:同上
date_range:同上
ip_range:同上
date类型,针对时间类型指定具体的格式
boolean类型,表达true和false
binary类型暂时支持Base64 encode string
经纬度类型:geo_point:用来存储经纬度的
ip类型:ip:可以存储IPV4或者IPV6
RESTful
操作结果:
结果:
结果:
结果:
结果:
结果:
结果:
结果:
结果:
自定义查询的命名规则:方法名必须是get、find、read、query其中之一开始,后面接字段名以及条件,条件之间的组合使用and或者or, 方法参数必须与使用的字段一一匹配
测试:
太多了 后面的在下一篇文章(ES的查询操作)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。