一、什么是 Elasticsearch
Elasticsearch 是一个分布式的开源搜索和分析引擎,适用于所有类型的数据,包括文本、数字、地理空间、结构化和非结构化数据。Elasticsearch 在 Apache Lucene 的基础上开发而成,由 Elasticsearch N.V.(即现在的 Elastic)于 2010 年首次发布。Elasticsearch 以其简单的 REST 风格 API、分布式特性、速度和可扩展性而闻名,是 Elastic Stack 的核心组件;Elastic Stack 是适用于数据采集、充实、存储、分析和可视化的一组开源工具。人们通常将 Elastic Stack 称为 ELK Stack(代指 Elasticsearch、Logstash 和 Kibana),目前 Elastic Stack 包括一系列丰富的轻量型数据采集代理,这些代理统称为 Beats,可用来向 Elasticsearch 发送数据。
二、Elasticsearch 的用途是什么
Elasticsearch 在速度和可扩展性方面都表现出色,而且还能够索引多种类型的内容,这意味着其可用于多种用例:
- 应用程序搜索
- 网站搜索
- 企业搜索
- 日志处理和分析
- 基础设施指标和容器监测
- 应用程序性能监测
- 地理空间数据分析和可视化
- 安全分析
- 业务分析
三、底层实现
Elastic的底层是开源库 Lucene。但是,你没法直接用 scene,必须自己写代码去调用它的接口。 Elastic是 Lucene的封装,提供了 REST API的操作接口,开箱即用。
REST API:天然的跨平台。
四、基本概念
1. 索引(index)
动词,相当于MySQL的insert
名次,相当于MySQL的Datebase
2. 类型(Type)
在 Index(索引)中,可以定义一个或多个类型。类似于 MySQL中的 Table;每一种类型的数据放在一起;
* PS:在新版本中Type已经作废掉了
3. 文档(Document)
保存在某个索引(Index)下,某种类型(Type)的一个数据(Document),文档是 JSON格式的, Document就像是 MySQL中的某个 Table里面的内容
五、倒排索引
分词:将整句分拆为单词
保存的记录
1-红海行动
2-探索红海行动
3-红海特别行动
4-红海记录篇
5-特工红海特别探索
检索:
1、红海特工行动 2、红海行动
根据相关性得分进行结果排序