• 中文文档
  • 参考文章1
  • 参考文章2

1.什么是 elastic search

  • Elasticsearch是一款开源的全文搜索与分析引擎,它拥有高扩展、大容量数据的存储和处理特性,有着近乎实时的处理效果。elasticsearch的使用场景还是比较多的,比如 APP 的搜索服务、ELK 实现日志收集与分析、BI 商业智能等。

1.1 基础概念

  • 近实时
    什么是近实时?
    它表示一个文档从被索引(存储使文档可搜索)到真正能被搜索之间有一个短暂的延迟,而非实时,这个延迟默认是 1 秒。当然,默认延迟可以修改的。
  • 集群
    集群是节点的集合。
    集群实现了在多节点上进行大容量数据存储和搜索的能力。每个集群都拥有唯一名称,而节点正是根据集群的名称决定是否加入某个集群。不同环境的集群的名称不能相同,如开发、测试、线上三套环境,集群可分别命名为 logging-dev、logging-test、logging-prod。
  • 节点
    节点,集群组成的一部分,负责具体的事务处理,比如数据存储、文档索引、搜索执行等。节点也有唯一个名称,如果没有指定将随机生成。
    节点可通过配置集群名称,指定加入哪个集群,节点默认的集群名称是 elasticsearch。如果我们在一个网络环境下启动多个节点,并且它们之间可以相互发现,就将会自动组织一个名称为 elasticsearch 的集群。
  • 索引
    索引是一系列相似文档的集合,例如,我们把客户信息存放到一个索引,订单信息存储到另一个索引中。索引可通过名称识别,名称必须小写。当操作文档时,我们需要通过索引名称指定。
    索引的数量,集群中并没有限制定义索引的数量。
  • 类型
    elastic search 6.0 已丢弃功能。
    有一点需要注意,为与老版本兼容,该功能暂未彻底移除,当前一个索引仍可设置类型,但当前只能指定一个类型。一般情况下,我们设置一个固定 type 即可,比如 _doc。
  • 文档
    被索引的基础信息单元,比如一个客户、一件产品、或是一笔订单。文档可用 JSON 形式表示,它是一种非常普遍的数据交换格式。索引中,我们可以存放任意数量的文档。
  • 分片与副本
    分片和副本是 elasticsearch 非常核心的概念。
    我们知道,elasticsearch 存储的数据量能突破单个硬件的限制,数据处理速度有着近实时的水平。这些都和分片和副本有着很大关系。
    分片实现了索引文档分散分布,并且每个切片都是功能完善的,索引是独立的,可能分布在集群中的任意节点。分片的重要性主要体现在使 elasticsearch 存储容量的水平扩展和分布式并行处理都成为了现实。
    副本提高了 elasticsearch 的容错能力。网络环境下,异常随时可能发生,比如一些节点或分片从网络中消失。一旦设置了副本,索引就会同时拥有主分片和副本分片。一旦某个分片发生异常,还有其他分片可替代。而且,副本也可以提高请求的处理速度,一个分片上的副本可同时并行处理多个请求。
    一句话简述,每个索引可以由多个分片组成,而每个分片也可以拥有多个副本

2.为什么要用elastic search

  • 相对于数据库,Elasticsearch的强大之处就是可以模糊查询。
  • 数据库like模糊查询是不走索引的,不走索引意味着:只要你的数据库的量很大(1亿条),你的查询肯定会是秒级别的。而且,即便给你从数据库根据模糊匹配查出相应的记录了,那往往会返回大量的数据给你,往往你需要的数据量并没有这么多,可能50条记录就足够了。而Elasticsearch是专门做搜索的,就是为了解决上面所讲的问题而生的,换句话说:Elasticsearch对模糊搜索非常擅长(搜索速度很快)从Elasticsearch搜索到的数据可以根据评分过滤掉大部分的,只要返回评分高的给用户就好了(原生就支持排序)没有那么准确的关键字也能搜出相关的结果(能匹配有相关性的记录)

2.1 Elastic search的数据结构

  • Elastic search 使用一种称为 倒排索引
    的结构,它适用于快速的全文搜索。一个倒排索引由文档中所有不重复词的列表构成,对于其中每个词,有一个包含它的文档列表。
  • 写入数据到Elasticsearch的时候会进行分词

  • 我们输入一段文字,Elasticsearch会根据分词器对我们的那段文字进行分词(也就是图上所看到的Ada/Allen/Sara…),这些分词汇总起来我们叫做Term Dictionary,而我们需要通过分词找到对应的记录,这些文档ID保存在PostingList
  • 在Term Dictionary中的词由于是非常非常多的,所以我们会为其进行排序,等要查找的时候就可以通过二分来查,不需要遍历整个Term
    Dictionary
  • 由于Term Dictionary的词实在太多了,不可能把Term
    Dictionary所有的词都放在内存中,于是Elasticsearch还抽了一层叫做Term Index,这层只存储 部分 词的前缀,Term Index会存在内存中(检索会特别快)

2.2 Elastic search内置了一些分词器

Standard Analyzer 。按词切分,将词小写
Simple Analyzer。按非字母过滤(符号被过滤掉),将词小写
WhitespaceAnalyzer。按照空格切分,不转小写

2.3 Elastic search分词器主要由三部分组成:

Character Filters(文本过滤器,去除HTML)
Tokenizer(按照规则切分,比如空格)
TokenFilter(将切分后的词进行处理,比如转成小写)

3.怎么使用Elastic search

  • 学会 elasticsearch 安装与启动,同时为了便于测试,顺带也介绍了 Kibana 的安装启动;
  • 探索集群,介绍集群涉及的一些基础操作,比如健康状态检查、集群节点检查,索引创建等;
  • 更新数据,包括如何进行文档替换、更新,以及如何进行删除,最后通过批处理可以将多个操作组合起来;
  • 数据探索,主要是与搜索和聚合分析相关,介绍了常用的一些搜索 API、Query DSL 和聚合 API 的使用;

未完,待补充

elastic serach学习相关推荐

  1. Elastic Job学习笔记

    目标: 第一章:概述 1.理解任务调度的概念 2.理解分布式任务调度的概念 3.能够说出Elastic-Job是什么 第二章:Elastic-Job快速入门 1.能够搭建Elastic-Job快速入门 ...

  2. 【Elastic Stack学习】ELK日志分析平台(一)ELK简介、ElasticSearch集群

    * ELK简介: ELK是Elasticsearch . Logstash.Kibana三个开源软件的缩写.ELK Stack 5.0版本之后新增Beats工具,因此,ELK Stack也改名为Ela ...

  3. Elastic Search学习笔记

    一:单机模式 数据格式 Elasticsearch是面向文档型数据库,一条数据在这里就是一个文档.为了方便大家理解,我们将Elasticsearch里存储文档 数据和关系型数据库 MySQL存储数据的 ...

  4. Elastic Search学习笔记5——基本操作

    2019独角兽企业重金招聘Python工程师标准>>> 创建索引 1.非结构化创建 在head页面上打开"索引",点击新建索引,输入 索引名称.分片数和副本数 2 ...

  5. Elastic stack技术栈学习(十)— springboot集成ES API详解

    目录 一.关于索引的API详解 1.1 声明客户端 1.2 创建索引 1.3 获取文档 / 判断文档是否存在 ​1.4 删除索引 二.关于文档的API详解 2.1 添加文档 2.2 判断文档是否存在 ...

  6. Elastic Search 中文拼音搜索补全实战

    引言 搜索提示是搜索框一个比较基础的功能,他赋予了搜索框生命,提高了用户的搜索体验.本文通过仿写 boss 直聘首页职位公司搜索,来实现一个自己搜索提示功能. 需求分析 搜索提示的情况比较多,比如根据 ...

  7. Elastic 社区资深布道师,分享也是一种快乐

    点击查看活动详情:CSDN 大家好,我叫刘晓国,来自 Elastic 社区,现为 Elastic 社区资深布道师.我毕业于西北工业大学硕士,新加坡国立大学硕士.曾经就职于新加坡科技,康柏电脑(Comp ...

  8. 01_ElasticSearch学习笔记

    ElasticSearch搜索引擎 文章目录 ElasticSearch搜索引擎 学习目标 1.ElasticSearche 1.1 全文检索 1.2 索引结构 1.3 ElasticSearch 1 ...

  9. Elasticsearch之自定义同义词开发实践

    1.什么是同义词查询 ES(Elasticsearch)作为一个开源的.高扩展的分布式全文检索引擎,具有近实时的索引.搜索和分析等优点.用户在使用ES时,主要青睐其快速的查询性能.不同于传统的数据库, ...

  10. python 字符识别_使用python进行光学字符识别入门

    python 字符识别 语言模型设计 (Language Model Designing) Optical Character Recognition is the conversion of 2-D ...

最新文章

  1. Linux下sqlite3乱码,sqlite中文乱码问题原因分析及解决
  2. 结合jenkins以及PTP平台的性能回归测试
  3. CSS3学习笔记-字体和文字
  4. 2017年6月21号课堂笔记
  5. JVM——三个ClassLoader详解
  6. 【HDU - 1873】 看病要排队(优先队列)
  7. 惠普暗影精灵3清灰_如何评价惠普笔记本这几年的表现?尤其是暗影精灵系列。...
  8. PGPDesktopWin32-10.2.0 加密与签名-软件实验8
  9. linux kill 杀一个进程
  10. excel使用教程_正版办公软件教程书Word Excel PPT办公应用从入门到精通教学加视频!...
  11. 微信小程序--基于colorui构建皮皮虾短视频去水印组件(仅供学习使用)
  12. Matlab中的plotyy细讲(双坐标图)
  13. 各种符号的英文读法读音单词
  14. 【JavaSE】多线程基础
  15. HPD健康产品申明认证
  16. SpringBoot 实现邮件发送功能
  17. 计算机主机的拆卸步骤,电脑清灰详细图文教程解说
  18. 数学建模--图与网络(1)
  19. 2021北京信息科技大学光电学院调剂复试经历
  20. python 下载百度贴吧图片

热门文章

  1. 一款批量修改AE模板的工具
  2. 服务器过载保护(下篇)——过载处理新方案
  3. matlab求多元函数微积分,中北大学高等数据MATLAB验证性实验7多元函数微积分学MATLAB实验报告格式...
  4. c/c++文本单词查询
  5. 电子计算机为什么123安不出来,右边键盘数字键打不出来怎么解锁
  6. 802.11ac中的Beamforming技术(4)
  7. 宽带拨号方式接入校网网指南 | windows10、win11、mac设置宽带拨号
  8. 程序员叫啥名字_程序员是什么职业什么职务?
  9. 二维最大类间方差阈值分割的快速迭代算法
  10. 龙渊服务器信息丢失,多多自走棋为什么停止运营 游戏数据转移腾讯服务器