ElasticSearch简介
1、ElasticSearch是什么?
Elasticsearch 是一个分布式、可扩展、实时的搜索与数据分析引擎。
官网文档
项目gitHub地址
2、ElasticSearch的核心概念
- cluster:每个集群至少包括两个结点
- node:集群中的结点,一个结点不代表一台服务器
- field:一个数据字段,与type和index一起可以定位一个doc
- document:ES最小数据单元 json格式的
- type:逻辑上的数据分类,es7.x中删除此概念
- index:一类相同或相似的document(类似于kafka的topic)
- shard分片:一个index可以包含多个Shard,默认5个,每个Shard会默认创建一个PrimaryShard(读写)和一个replaceShard(从)
3、解释ElasticSearch的定义
1、分布式:分布式部署,将服务部署多台服务器上
2、可扩展:只需要增加服务器的结点就可以用,集群自动发现(cluster discovery)、自动维护数据在多个节点上的建立、搜索请求的负载均衡、自动维护冗余副本是ElasticSearch自己帮我们维护的。
3、事实的搜索:事实的不能解释,搜索即全文检索-》基于倒排索引->基于Lucene自动建立倒排索引(单机,而且API复杂)
4、数据分析:暂时解释不了
4、ElasticSearch应用场景
- 全文检索
- 各大网站的用户行为日志(收集和分析),BI数据分析和数据挖掘统计
- ELK:Elasticsearch(数据存储)、Logstash(日志采集)、Kibana(可视化)
ElasticSearch中倒排索引的数据结构
1、包含关键字的doc list
2、关键字在每个doc中的频率 TF term frequency
3、关键字在索引中的频率 IDF inverse doc frequency
4、关键字在单前doc中出现的频率
5、doc越长,相关度越低
6、包含这个关键字的doc的总体长度