当前位置: 首页 > news >正文

ElasticSearch 7.6.1

疑问

  • ES为什么这么快?

全文检索

  1. 听过一个程序扫描文本的每一个单词,针对单词建立索引,并保存该单词在文本中的位置,以及出现的次数。
  2. 在检索查询时候,通过建立好的索引进行查询,将索引中单词对应的文本位置,出现的此处返回给用户,有了具体文本的位置,就可以将具体内容读取出来。

分词原理、倒排索引

  • 例如我要存储三个数据:“hello speeder”、“hello world”、“Im speeder”,那么存储的过程会经历什么?
    1. 分词和去重,将上述三个数据分成四个单词:hello speeder world Im
    2. 建立倒排索引:
IDwordindex
1hello1,2
2speeder1,3
3world2
4Im3
  • 正排索引:根据index查询数据信息,例如根据ID查询name
  • 倒排索引:根据数据信息查询对应的index,也叫反向索引,上述根据word查询index就是倒排索引
  • 在用户检索查询时,流程如下:
    1. 先根据关键词查word查询到index。
    2. 再根据index查询到对应的整条数据记录,包含其他所有的field。(我认为这一步类似于关系型数据库中聚集索引的回表操作)
    3. 展示信息。

ES、Lucene、Solr

  • lucene只能用在java项目中,需要引入jar包
  • lucene不支持集群环境
  • Solr实时建立索引时,Solr会产生IO阻塞,查询性能较差,Solr用的是Zookeeper进行分布式管理,而ES自带有分布式协调管理功能。
  • Solr支持JSON/XML/CSV,但是ES只支持json文件,但是ES实时搜索应用效率高于Solr
  • ES是基于Lucene的搜索框架

ES、kibana、logstash

  • ES搜索引擎
  • kibana可视化管理界面
  • logstash存储库

ES和关系型数据库比较

ES关系型数据库
Index(索引)Database(数据库)
Type或者_Doc(类型)Table(表)
Document(文档)Row(行)
Field(字段)Column(列)

ES中的重要概念

  • Index
  • Mapping
  • Type
  • Document
  • Field
  • Cluster
  • node
  • 分片和副本

文档映射

查看映射关系:get /index_name/_mapping,加上_下划线表示查看ES内置对象

  • 动态映射,自动映射字段类型
  • 静态映射,自己指定字段映射类型
  • text类型中,会有type为keyword的类型字段,因为text默认是要拆分分词进行检索,keyword是为了保留原文本的不拆分而存在的,keyword也算一种类型,例如人员表中的name就可以设置为keyword,不必设置成text进行分词拆分。

IK分词器

  • ES中默认的分词器是单字分词器,会把一句汉字中的所有字都拆开,所以默认的在中文环境下十分不好用,所以要用第三方分词器。
  • IK直接放在ES安装目录下的plugins,重启ES后即可生效。
  • IK分词器两种模式:
    • ik_smart,粗粒度拆分,运用比较少。
    • ik_max_word,最细粒度拆分,常用。
  • ES中指定IK分词器作为默认分词器
put /index_name
{"settings"	: {"index": {"analysis.analyzer.default.type" : "ik_max_word"}}
}

基本操作

  • 创建索引库:put /index_name
  • 查询索引库:get /inex_name
  • 删除索引库:delete /index_name
  • 添加一条记录:put /index_name/_doc/id,例如put /test/user/1
  • 条件查询
  • 范围查询
  • 批量查询
  • 分页查询

DSL语言高级查询(ES中最核心的查询语法)

  • match,拆分查询
  • term,不拆分查询
  • multi_match,多词查询

ES-Header集群管理可视化界面

待更新。。

http://www.lryc.cn/news/6514.html

相关文章:

  • Linux系列 操作系统安装及服务控制(笔记)
  • Linux基础 - NTP时间同步
  • golang 入门教程:迷你 Twitter 后端
  • CPP2022-30-期末模拟测试03
  • 华为OD机试真题Python实现【最多等和不相交连续子序列】真题+解题思路+代码(20222023)
  • 二叉搜索树
  • 数据结构(三):集合、字典、哈希表
  • Linux内核驱动开发(一)
  • TCP/IP协议二十问
  • 常用Array数组操作方法
  • 【C++】set/multiset、map/multimap的使用
  • vue3语法
  • 对象之间的关系
  • 云原生时代顶流消息中间件Apache Pulsar部署实操-上
  • Python实现基于openCV+百度智能云平台实现《1:N人脸考勤机》文章最后附带源码!
  • 因为锁的问题,我们被扣了1万
  • 【STM32笔记】低功耗模式下的RTC唤醒(非闹钟唤醒,而是采用RTC_WAKEUPTIMER)
  • 浏览器渲染中的相关概念
  • 【MySQL】数据类型
  • L2-037 包装机
  • MySQL -查询日志、二进制日志、错误日志、慢查询日志
  • TCP实现可靠传输的实现
  • 2/14考试总结
  • 程序环境和预处理详解
  • The Social-Engineer Toolkit(社会工程学工具包)互联网第一篇全模块讲解
  • Windows11去掉不满足系统要求的提示水印
  • JavaScript 计时事件
  • 七大排序算法的多语言代码实现
  • 【基础算法】表达式计算
  • 动态规划问题