ElasticSearch

一、ES的简单了解

借鉴自:https://blog.csdn.net/laoyang360/article/details/52244917

1.1 ES定义
  • Elasticsearch是一个开源的高扩展分布式全文检索引擎
  • 近乎实时的存储、检索数据;扩展性很好,可以扩展到上百台服务器,处理PB级别的数据;
  • 使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能;但它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单;
  • ES主要解决的问题:
    1)检索相关数据;
    2)返回统计结果;
    3)速度要快;
1.2 ES核心概念
  • Cluster:集群
  • Node:节点
  • Shard:分片
  • Replia:副本
  • 全文检索
1.3 ES工作原理
  • 当ElasticSearch的节点启动后,它会利用多播(multicast)寻找集群中的其它节点,并与之建立连接。
1.4 与关系数据库Mysql的对比

在这里插入图片描述

  • 在数据库中的增insert、删delete、改update、查search操作等价于ES中的增PUT/POST、删Delete、改_update、查GET;
1.5 ELK
  • elasticsearch:后台分布式存储以及全文检索;
  • logstash: 中央数据流引擎,用于从不同目标收集的不同格式数据,过滤后支持输出到不同目的地;
  • kibana:数据可视化,提供实时分析的功能;
1.6 对比Solr
  • 当单纯的对已有数据(已经存在数据库中)进行搜索时,Solr更快;
  • 当实时建立索引时,Solr会产生io阻塞,查询性能较差,ES具有明显优势;
  • 随着数据量的增加,Solr的搜索效率会变得更低,而ES却没有明显的变化;
  • 如果转变搜索基础设施,从Solr到ES,搜索性能可提高50x;
1.7 其他
  • 解压即可使用;
  • 仅支持json文件格式;
  • ES更专注于核心功能,高级功能多由第三方插件提供;
  • 实时性查询快;

二、ES学习笔记

2.1 安装
  • ES安装:
    版本:Elasticsearch7.6.1;
    JDK1.8最低要求;保证JDK环境是正常的;
    Elasticsearch客户端,界面工具;
    ES版本和对应的Java的核心jar包,版本对应;
  • 熟悉目录:
    录名解释
    in启动文件
    onfig配置文件
    onfig/log4j2日志配置文件
    onfig/jvm.optionsjava虚拟机相关配置
    onfig/elasticsearch.ymlelasticsearch配置文件
    (集群、日志信息、内存、网络等的配置)
    默认9200端口!跨域问题配置!
    ib相关jar包
    og日志
    odules功能模块
    lugins插件
  • 启动elasticsearch.bat,访问9200
  • 安装可视化界面elasticsearch-head
    注意1:没有Node.js是不可以的,先看Vue安装基本环境;
    注意2:9100跨域问题需要配置es;
  • 安装Kibana
    注意:版本要和ES一致;5601
    汉化修改配置即可;
2.2 ES核心概念
  • 一切都是JSON!
  • 物理设计
    • Elasticsearch在后台把每个索引划分成多个分片,每个分片可以在集群中的不同节点间迁移;
    • 集群(Cluster)是一个或多个节点(Node,一个单独的服务器)的集合,它们一起保存数据,并提供联合索引及搜索功能。集群存在一个唯一的名字身份,默认为“elasticsearch”;
    • 集群至少有一个节点,一个节点可以有多个索引,创建一个索引时默认有5个分片(Shards)构成,每一个主分片会有一个副本(Replicas);主分片和对应的复制分片都不会在同一个节点内;
  • 逻辑设计
    • 集群中包含多个索引,每个索引中包含多个类型,每个类型包含多个文档,每个文档中包含多个字段;
    • 索引一篇文档时:索引>类型>文档ID,ID是整数或字符串;
  • 索引(index)
    • 索引是映射类型的容器,是一个非常大的文档集合;
    • 索引存储了映射类型的字段和其他设置,然后被存储到各个分片上;
    • 简单讲,索引就是数据库;
  • 类型
    • 类型是文档的逻辑容器,类型中对于字段的定义称为映射(mapping);
    • 可以不设置,Elasticsearch可以猜测,安全起见提前定义好映射;
  • 文档(document)
    • Elasticsearch是面向文档的,文档是索引和搜索数据的最小单位;
    • 简单讲,文档就是一条条数据;
  • 倒排索引
    • 倒排索引:通过value去找key;
    • 一个倒排索引由文档中所有不重复词的列表构成,对于其中每个词,有一个包含它的文档列表;
    • 每一个Elasticsearch分片是一个Lucene的索引;
2.3 IK分词器
  • 下载,解压到插件文件夹,重启ES;
  • ik_smart 最少切分
  • ik_max_word 最细粒度划分
    GET _analyze
    {
    	"analyzer": "ik_smart",
    	"text": "我爱作业帮"
    }
    GET _analyze
    {
    	"analyzer": "ik_max_word ",
    	"text": "我爱作业帮"
    }
    
2.4 Rest风格说明(Kibana)
methodurl地址描述
PUTlocalhost:9200/索引名称/类型名称/文档id创建文档(指定文档id)
POSTlocalhost:9200/索引名称/类型名称创建文档(随机文档id)
POSTlocalhost:9200/索引名称/类型名称/文档id/_update修改文档
DELETElocalhost:9200/索引名称/类型名称/文档id删除文档
GETlocalhost:9200/索引名称/类型名称/文档id通过文档id查询文档
POSTlocalhost:9200/索引名称/类型名称/_search查询所有数据
  • 类型名称未来弃用,默认 _doc;
  • 字段类型,见官方文档;
2.5 关于文档的基本操作
  • 操作:
    匹配
    按照条件匹配
    精确匹配
    区间范围匹配
    匹配字段过滤
    多条件查询
    高亮查询
    API功能
    “query”构建对象
    “_source”结果过滤
    “sort”排序
    “from”
    “size”
    分页查询
    “must”and
    “should”or
    “must_not”and
    "filter"
    gt/lt/gte/ite
    过滤(大于/小于/大于等于/小于等于)
    “highlight”高亮
  • 关于分词:
    term:直接查询精确的;
    match:会使用分词器解析(先分析文档,再进行查询);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值