Elasticsearch
是一个分布式可扩展的实时搜索和分析引擎,一个建立在全文搜索引擎 Apache Lucene(TM) 基础上的搜索引擎.当然 Elasticsearch 并不仅仅是 Lucene 那么简单,它不仅包括了全文搜索功能,还可以进行以下工作:
分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索。实时分析的分布式搜索引擎。可以扩展到上百台服务器,处理PB级别的结构化或非结构化数据。
MySQL
作为开源关系型数据库,应用范围非常广泛,非常适合于结构化数据存储和查询。在数据查询场景下,默认返回所有满足匹配条件的记录;而ES作为新生代NoSQL数据库代表之一,非常适合于非结构化文档类数据存储、更创新支持智能分词匹配模糊查询。比如在电商网站商品搜索栏中,用户输入以空格为分隔符的字符串(如:家电电视等),后台ES数据库搜索引擎会根据用户输入的信息,对数据库中保存的非结构化数据进行分词模糊匹配查询,返回满足匹配条件的前N条记录给用户;另外ES更典型应用在于根据用户浏览记录日志来追踪用户行为,智能推送用户期望浏览的数据信息,此时通常借助ELK三大组件互相配合完成。
对比
1、关系型数据库中的数据库(DataBase),等价于ES中的索引(Index)
2、一个数据库下面有N张表(Table),等价于1个索引 Index下面有N多类型(Type),
3、一个数据库表(Table)下的数据由多行(ROW)多列(column,属性)组成,等价于1个Type由多个文档(Document)和多Field组成。
4、在一个关系型数据库里面,schema定义了表、每个表的字段,还有表和字段之间的关系。 与之对应的,在ES中:Mapping定义索引下的Type的字段处理规则,即索引如何建立、索引类型、是否保存原始索引JSON文档、是否压缩原始JSON文档、是否需要分词处理、如何进行分词处理等。
5、在数据库中的增insert、删delete、改update、查search操作等价于ES中的增PUT、删Delete、改POST、查GET.
MySQL数据库导入Elasticsearch
通过elasticsearch-jdbc工具将已有的数据库导入ES
从以下地址下载包(注意版本需要和ES版本对应)
https://github.com/jprante/elasticsearch-jdbc
配置导入脚本
将工具包解压缩到ES安装目录下,并修改路径$(es安装目录)elasticsearch-jdbcbinmysql-simple-example.bat内容(注意备份原文件)
修改的地方重点在
- JDBC驱动配置(url,user,password)
- 需要导入的数据 (sql语句)
- 导出后ES中Index和type名字(index,type)
修改后的配置文件
@echo offset DIR=%~dp0set LIB=%DIR%..lib*set BIN=%DIR%..binREM ???echo {^ "type" : "jdbc