Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。作为 Elastic Stack 的核心,Elasticsearch 会集中存储您的数据,让您飞快完成搜索,微调相关性,进行强大的分析,并轻松缩放规模。
The Elastic Stack, 包括 Elasticsearch、Kibana、Beats 和 Logstash(也称为 ELK Stack)。 能够安全可靠地获取任何来源、任何格式的数据,然后实时地对数据进行搜索、分析和可视 化。Elaticsearch,简称为 ES,==ES 是一个开源的高扩展的分布式全文搜索引擎,是整个 Elastic Stack 技术栈的核心。==它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上 百台服务器,处理 PB 级别的数据。
全文搜索引擎
像谷歌,百度这样的网站搜索,它们都是根据网页中的关键字生成索引,我们在搜索时输入的关键字,它们会将该关键字即索引匹配到的所有网页返回。还有常见的项目中使用的日志搜索等等。对于这些非结构化的数据文本,关系型数据库搜索不是能很好的支持。
一般的传统数据库,全文检索都实现的很鸡肋,因为一般人也不会使用数据库去存文本字段。进行全文检索还需要扫描整个表,如果数据量很大,即使对SQL进行了语法优化和性能调优,也没有什么效果,就算建立了索引维护起来也非常麻烦,对于insert和update操作都会重构索引。所以说,在生产环境中使用常规的搜索方式性能很差劲。
搜索的数据对象是大量的非结构化的文本数据;
文件记录量达到数十万或数百万甚至更多;
支持大量基于交互式文本的查询;
需求非常灵活的全文搜索查询;
对高度相关的搜索结果有特殊的需求,但是没有可用的关系数据库可用满足;
对不同记录类型、非文本数据操作或安全事务处理的需求相对较少的情况;
为了解决结构化数据搜索和非结构化数据搜索性能问题,我们需要更专业、健壮更强大的全文搜索引擎,这里的全文搜索引擎指的是目前广泛应用的主流搜索引擎。它的工作原理是计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式,相当于查字典中检索字表查字的过程。
ES技术是基于lucene进行深度定制而开发的,所以有必要晒出一部分代码来探讨ES技术最底层的依赖技术Lucene
pom.xml
写入数据:
查询索引:
现在分享基于v6.4版本的Elasticsearch中windows版本
通过百度网盘分享的文件:elasticsearch-6.2.4.zip
链接:https://pan.baidu.com/s/1WKYyqqoojJ-Rsau2YLeeYQ?pwd=5q4j
提取码:5q4j
Kibana工具
通过百度网盘分享的文件:kibana-6.2.4-windows-x86_64.zip
链接:https://pan.baidu.com/s/19PBN7M5h-HNB8NgApDfEoA?pwd=kavw
提取码:kavw
Elasticsearch的中文分词器,把代码放在Elasticsearch安装目录的plugins目录下
通过百度网盘分享的文件:elasticsearch-analysis-ik-6.2.4.zip
链接:https://pan.baidu.com/s/13APcy_OP6HFBv877PO35nA?pwd=osao
提取码:osao