Elasticsearch初探

ElasticSearch

Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。
Elasticsearch结合Kibana、Logstash、Beats,也就是elastic
stack(ELK)。被广泛应用在日志分析、实时监控(CPU、Memory、Program)等领域。
elasticsearch是elastic stack的核心,负责存储、搜索、分析数据。
Kibana 负责数据可视化
Elasticsearch 负责存储、计算、搜索数据
Logstash、Beats负责数据抓取

elasticsearch的底层实现基于lucene,lucene是一个Java语言的搜索引擎类库,是Apache公司的顶级项目,由DougCutting于1999年研发
官网:https://lucene.apache.org
Elasticsearch初探_第1张图片

Lucene
优点:易扩展、高性能(基于倒排索引数据结构)
缺点:限于Java语言、学习曲线陡峭、不支持水平扩展

elasticsearch
2004年Shay Banon基于Lucene开发了Compass
2010年Shay Banon重写了Compass,取名Elasticsearch
相比lucene其具备支持分布式、可水平扩展、提供Restful接口、可被任意语言调用的优势
ES官网地址:https://www.elastic.co/cn/

正向索引与倒排索引

elasticsearch采用倒排索引:

  • 文档(document):每条数据就是一个文档
  • 词条(term):文档按照语义划分的词语

正向索引

id title price
1 小米手机 3499
2 华为手机 4999
3 华为小米充电器 49
4 小米手环 299

倒排索引

词条(term) 文档id
小米 1, 3, 4
手机 1,2
华为 2,3
充电器 3
手环 4

文档

elasticsearch是面向文档存储的,可以是数据库中的一条商品数据,一个订单信息。
文档数据会被序列化成json格式

索引

  • 索引(index):相同类型的文档的集合
  • 映射(Mapping):索引中文档的字段约束信息,类似表的结构约束

商品索引

{
"id":1,
"title":"小米手机",
"price":3499
}

{
"id":2,
"title":"华为手机",
"price":4999
}

{
"id":3,
"title":"三星手机",
"price":3999
}

用户索引

{
"id":101,
"name":"张三",
"age":21
}

{
"id":102,
"name":"李四",
"age":24
}

{
"id":103,
"name":"王五",
"age":18
}

订单索引

{
"id":10,
"userId":101,
"goodsId":1,
"totalFee":294
}

{
"id":11,
"userId":102,
"goodsId":2,
"totalFee":328
}

MySQL与ES概念的对比

MySQL Elasticsearch 说明
Table Index 索引(Index),是文档的集合、类似数据库的表(table)
Raw Document 文档(Document),是一条条的数据、类似数据库中的行(Row),文档都是json格式
Column Field 字段(Field),是json文档中的字段,类似数据库中的列(Column)
Schema Mapping Mapping(映射),是索引中文档的约束,例如字段类型的约束,类似数据库的表结构(Schema)
SQL DSL DSL是Elasticsearch提供的json风格的请求语句,用于操作elasticsearch,实现CRUD

架构

MySQL:擅长事务类型操作,可以确保数据的安全和一致性
Elasticsearch:擅长海量数据的搜索、分析、计算
二者是互补,而非替代的关系
Elasticsearch初探_第2张图片

安装elasticsearch、kibana

elasticsearch 7.6.1:https://www.elastic.co/cn/downloads/past-releases/elasticsearch-7-6-1

kibana 7.6.1:https://www.elastic.co/cn/downloads/past-releases/kibana-7-6-1

jdk:https://www.oracle.com/java/technologies/
7.x版本es、kibana无需自行安装jdk

下载并解压es、kibana到固定路径,并将其bin目录加入环境变量

修改config/kibana.yml配置文件,去掉elasticsearch.hosts前的注释

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

打开命令行,输入elasticsearch.bat启动es
新建窗口,输入kibana.bat启动kibana

es的默认端口是9200,其启动成功界面如下图所示
Elasticsearch初探_第3张图片
kibana默认端口是5601,其启动成功界面入下图所示
Elasticsearch初探_第4张图片
打开Dev Tools,输入GET /,查看ES信息
Elasticsearch初探_第5张图片

你可能感兴趣的:(#,ELK,elasticsearch,搜索引擎)