ElasticSearch笔记

Posted XLrong2000

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ElasticSearch笔记相关的知识,希望对你有一定的参考价值。

ES

ES是一个开源搜索引擎,具备非常多强大功能,可以帮助我们从海量数据中快速找到需要的内容
ES结合kibana、Logstash、Beats,也就是Elastic技术栈,被广泛应用在日志数据分析、实时监控等领域
ES是Elastic技术栈的核心,负责存储、搜索、处理数据

Lucene

一个Java语言的搜索引擎类库,是Apache公司的顶级项目,由DougCutting于1999年研发

Lucene优缺点

  • 优势
    • 易扩展
    • 高性能(基于倒排索引)
  • 缺点
    • 只限于Java语言开发
    • 学习曲线陡峭
    • 不支持水平扩展

ES相对于Lucene的优点

  • 支持分布式,可水平扩展
  • 提供Restful接口,可被任何语言调用

ES结构以及和mysql各部分区别

MySQLElasticsearch说明
TableIndex索引(index),就是文档的集合,类似数据库的表(table)
RowDocument文档(Document),就是一条条的数据,类似数据库中的行(Row),文档都是JSON格式
ColumnField字段(Field),就是JSON文档中的字段,类似数据库中的列(Column)
SchemaMappingMapping(映射)是索引中文档的约束,例如字段类型约束。类似数据库的表结构(Schema)
SQLDSLDSL是elasticsearch提供的JSON风格的请求语句,用来操作elasticsearch,实现CRUD
  • MySQL擅长事务类型操作,可以确保数据的安全和一致性
  • Elasticsearch擅长海量数据的搜索、分析、计算
  • MySQL和Elasticsearch不是相互替代的关系、是互补的关系

倒排索引

倒排索引是基于MySQL这样的正向索引而言的

  • 文档: 每条数据就是一个文档
  • 词条: 文档按照语义分成的词语

倒排索引流程

  • 将每一个文档的数据利用算法分词,得到一个个词条
  • 创建表,每行数据包括词条、词条所在文档id、位置等信息
  • 因为词条唯一性,可以给词条创建索引,例如hash表结构索引

部署单点ES

  1. 创建网络
docker network create es-net
  1. 下载镜像/加载镜像
# 因为镜像比较大,可以选择从本地上传
# 下载elasticsearch
docker pull elasticsearch:所需tag
# 下载kibana
docker pull kibana:所需tag
  1. 运行镜像
docker run -d \\
    --name es \\
    -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \\
    -e "discovery.type=single-node" \\
    -v es-data:/usr/share/elasticsearch/data \\
    -v es-plugins:/usr/share/elasticsearch/plugins \\
    --privileged \\
    --network es-net \\
    -p 9200:9200 \\
    -p 9300:9300 \\
elasticsearch:7.12.1

命令解释:

  • -e "cluster.name=es-docker-cluster":设置集群名称
  • -e "http.host=0.0.0.0":监听的地址,可以外网访问
  • -e "ES_JAVA_OPTS=-Xms512m -Xmx512m":内存大小,可以改小
  • -e "discovery.type=single-node":非集群模式
  • -v es-data:/usr/share/elasticsearch/data:挂载逻辑卷,绑定es的数据目录
  • -v es-logs:/usr/share/elasticsearch/logs:挂载逻辑卷,绑定es的日志目录
  • -v es-plugins:/usr/share/elasticsearch/plugins:挂载逻辑卷,绑定es的插件目录
  • --privileged:授予逻辑卷访问权
  • --network es-net :加入一个名为es-net的网络中
  • -p 9200:9200:端口映射配置
  1. 浏览器查看是否启动(记得开放9200端口)
  2. 启动Kibana(ES可视化)
docker run -d \\
--name kibana \\
-e ELASTICSEARCH_HOSTS=http://es:9200 \\
--network=es-net \\
-p 5601:5601  \\
kibana:7.12.1
  • 注: 内存不足时ES容器会自动停止

安装IK分词器

  1. 在线安装IK插件
# 进入容器内部
docker exec -it es /bin/bash

# 在线下载并安装
./bin/elasticsearch-plugin  install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.12.1/elasticsearch-analysis-ik-7.12.1.zip
  1. 推出容器
exit
  1. 重启容器
docker restart es
  1. 测试
GET /_analyze

  "analyzer": "ik_max_word",
  "text": "ES真是太好了,太好用了了"

以上是关于ElasticSearch笔记的主要内容,如果未能解决你的问题,请参考以下文章

Elasticsearch 基本概念

Elasticsearch 教程

Elasticsearch 基本概念

SpringBoot-spring-data-elasticsearch7.12.0

elasticsearcch部署

Elasticsearch后台运行步骤