当前位置:   article > 正文

全文搜索引擎 Elastic Search_好用的全文搜索引擎,有中文文档

好用的全文搜索引擎,有中文文档

第一节 引言

当系统数据量上了10亿、100亿条的时候,我们用什么数据库好?如何解决单点故障?如何提升检索速度?如何解决统计分析问题?

传统数据库的应对解决方案

通过主从备份解决数据安全性问题; 通过数据库代理中间件心跳监测,解决单点故障问题; 通过代理中间件将查询语句分发到各个slave节点进行查询,并汇总结果

  • 非关系型数据库

通过副本备份保证数据安全性; 通过节点竞选机制解决单点问题; 先从配置库检索分片信息,然后将请求分发到各个节点,最后由路由节点合并汇总结果

另辟蹊径

存储数据时按有序存储; 将数据和索引分离; 压缩数据;

于是,Elastic Search就在这种背景下诞生了

第二节 Elastic Search 介绍

1.1 ES简介

Elastic Search 简称ES,是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。

1.2 ESLucene 的关系

  • Lucene 只是一个库。想要使用它,你必须使用Java来作为开发语言并将其直接集成到你的应用中,更糟糕的是,Lucene 非常复杂,你需要深入了解检索的相关知识来理解它是如何工作的

  • ES也使用Java开发并使用 Lucene 作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的 RESTful API来隐藏 Lucene 的复杂性,从而让全文搜索变得简单

第二节 安装 Elastic Search

2.1 安装 Elastic Search

解压 elasticsearch-7.6.2-windows-x86_64.zip

2.2 安装 Kibana

解压 kibana-7.6.2-windows-x86_64.zip

  • 修改配置

    elasticsearch.hosts: ["http://localhost:9200"]

2.3 安装 IK Analyzer

  • 进入 elasticsearch-7.6.2\plugins 目录

  • 创建文件夹 ik

  • elasticsearch-analysis-ik-7.6.2.zip 拷贝至 ik 目录下,然后解压

第三节 ES 结构

结构说明:

  • ES中的索引(index)相当于 MySQL 中的数据库(database),但ES7之后建议每个索引下只存放一种类型(type)

  • ES中的数据分片(shard)是特有的,在集群模式下,海量的数据可以分别存储在不同的分片中,每个分片都有备份数据,其备份数据称为replica,备份数据的主要作用就是在主分片数据不可用的情况下,会将备份数据(replica)作为新的主分片使用

  • ES中的类型(type)相当于 MySQL 中的表(table)

  • ES中的文档(document)相当于 MySQL 中的表的一行数据(row)

  • ES中的字段(field)相当于 MySQL 中的表的字段(field)

第四节 ES 字段类型

4. 1 字符串类型

  • text:一把被用于全文检索。 将当前Field进行分词。

  • keyword:当前Field不会被分词。

4.2 数值类型

  • long:占用8个字节

  • integer:占用4个字节

  • short:占用2个字节

  • byte:占用1个字节

  • double:占用8个字节

  • float:占用4个字节

4.3 范围类型

  • long_range:赋值时,无需指定具体的内容,只需要存储一个范围即可,指定gt,lt,gte,lte

  • integer_range:同上

  • double_range:同上

  • float_range:同上

  • date_range:同上

  • ip_range:同上

4.4 其他类型

  • date类型,针对时间类型指定具体的格式

  • boolean类型,表达true和false

  • binary类型暂时支持Base64 encode string

  • 经纬度类型:geo_point:用来存储经纬度的

  • ip类型:ip:可以存储IPV4或者IPV6

第五节 ES RESTful 操作

5.1 索引操作

5.1.1 创建索引

结果:

5.1.2 查看索引

结果:

5.1.3 删除索引

结果:

5.2 类型操作

5.2.1 创建类型

结果:

5.2.2 查看类型

结果:

5.3 文档操作

5.3.1 增加文档

结果:

5.3.2 查看文档

结果:

5.3.3 修改文档

结果:

5.3.4 删除文档

结果:

第六节 Java 操作 ES

6.1 创建maven工程

6.2 编写实体类

6.3 索引操作

6.3.1 编写测试类

6.3.2 创建索引

6.3.3 删除索引

6.4 文档操作

6.4.1 编写Repository

6.4.2 编写测试类

6.4.3 添加文档

6.4.4 修改文档

6.4.5 查询文档

6.4.6 删除文档

6.4.7 批量保存

6.4.8 分页查询

6.4.9 排序查询

6.4.10 自定义查询

自定义查询的命名规则:方法名必须是get、find、read、query其中之一开始,后面接字段名以及条件,条件之间的组合使用and或者or, 方法参数必须与使用的字段一一匹配

测试:

太多了 后面的在下一篇文章(ES的查询操作)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/75389
推荐阅读
相关标签
  

闽ICP备14008679号