ElasticSearch基础(一)

2023-10-26

ElasticSearch 适用场景

  1. 日志可视化 --ELK组合,方便查询定位业务问题
  2. 存储非结构化数据,有些场景存储复杂嵌套的关系类型,使用关系型数据库联合查询将会很繁琐,并且影响性能,这时ElasticSearch是个不错的选择。
  3. 全文搜索引擎,对于海量数据的准实时搜索场景,ES是个不错的选择

ElasticSearch的搜索过程

1、当索引一片文档时发生了什么

首先根据文档ID散列值选择一个主分片,并将文档发送给主分片,然后文档被发送到该主分片的所有副本进行索引,使得副本分片和主分片保持同步,副本分片可以服务于搜索请求,并在原主分片不可用时,升级为主分片。
在这里插入图片描述
2、搜索索引时发生了什么
搜索时,在索引的所有分片中进行查找,这些分片可以是主分片,也可以是副本分片,负载均衡,提升性能。接受请求的节点将请求转发到一组包含所有数据的分片,ES使用round-robin的轮询机制选择可用分片(主或副本分片),并将请求转发出去,然后从这些分片收集结果,然后将结果聚集在一起返回。
在这里插入图片描述

什么是分片

一个分片是lucence的索引,一个包含倒排索引的文件目录,倒排索引使得ES在不扫描所有文档的情况下,就能告诉你哪些文档包含特定的词条。
注:
1、也就是说一个ES 索引,包含多个分片,每个分片又是一个单独的Lucence索引
2、副本分片可以动态的增加和删除,主分片不可以
在这里插入图片描述

什么是倒排索引

Elasticsearch 使用一种称为 倒排索引 的结构,它适用于快速的全文搜索。一个倒排索引由文档中所有不重复词的列表构成,对于其中每个词,有一个包含它的文档列表。

例如,假设我们有两个文档,每个文档的 content 域包含如下内容:

1.The quick brown fox jumped over the lazy dog
2.Quick brown foxes leap over lazy dogs in summer

为了创建倒排索引,我们首先将每个文档的 content 域拆分成单独的 词(我们称它为 词条 或 tokens ),创建一个包含所有不重复词条的排序列表,然后列出每个词条出现在哪个文档。结果如下所示:

现在,如果我们想搜索 quick brown ,我们只需要查找包含每个词条的文档:

两个文档都匹配,但是第一个文档比第二个匹配度更高。如果我们使用仅计算匹配词条数量的简单 相似性算法 ,那么,我们可以说,对于我们查询的相关性来讲,第一个文档比第二个文档更佳。

但是,我们目前的倒排索引有一些问题:

  • Quick 和 quick 以独立的词条出现,然而用户可能认为它们是相同的词。
  • fox 和 foxes 非常相似, 就像 dog 和 dogs ;他们有相同的词根。
  • jumped 和 leap, 尽管没有相同的词根,但他们的意思很相近。他们是同义词。

使用前面的索引搜索 +Quick +fox 不会得到任何匹配文档。(记住,+ 前缀表明这个词必须存在。)只有同时出现 Quick 和 fox 的文档才满足这个查询条件,但是第一个文档包含 quick fox ,第二个文档包含 Quick foxes 。

我们的用户可以合理的期望两个文档与查询匹配。我们可以做的更好。

如果我们将词条规范为标准模式,那么我们可以找到与用户搜索的词条不完全一致,但具有足够相关性的文档。例如:

  • Quick 可以小写化为 quick 。
  • foxes 可以 词干提取 --变为词根的格式-- 为 fox 。类似的, dogs 可以为提取为 dog 。
  • jumped 和 leap 是同义词,可以索引为相同的单词 jump 。

现在索引看上去像这样:

这还远远不够。我们搜索 +Quick +fox 仍然 会失败,因为在我们的索引中,已经没有 Quick 了。但是,如果我们对搜索的字符串使用与 content 域相同的标准化规则,会变成查询 +quick +fox ,这样两个文档都会匹配!

这非常重要。你只能搜索在索引中出现的词条,所以索引文本和查询字符串必须标准化为相同的格式。
分词和标准化的过程称为 分析。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ElasticSearch基础(一) 的相关文章

随机推荐

  • java通用二维码生成工具封装

    该工具类使用google zxing实现二维码生成 可生成通用二维码和带中心图标的二维码 import java awt BasicStroke import java awt Color import java awt Graphics2
  • C语言详解系列——指针与结构体

    文章目录 指针是什么 指针变量的大小 指针与指针类型 野指针 指针运算 指针加减整数 指针减指针 指针的关系运算 指针与数组 二级指针 指针数组 结构体 结构体的声明 结构体变量的定义和初始化 结构体成员的访问 结构体传参 指针是什么 1
  • 谈一谈冷门的C语言爬虫

    目录 C语言写爬虫是可行的 C语言爬虫不受待见 C语言爬虫有哪些可用的库和工具 C语言爬虫示例 总结 在当今的编程世界中 C语言相比于一些主流编程语言如Python JavaScript等 使用范围相对较窄 然而 尽管C语言在爬虫领域的应用
  • centos系统应用日志文件被删,空间无法释放怎么办?

    前言 工作中经常遇到Linux系统磁盘空间不足 但是删除后较大的日志文件后 发现磁盘空间仍没有被释放 有点摸不着头脑 今天博主带大家解决这个问题 思路 1 工作发现磁盘空间不足 2 找到占用磁盘空间较大的文件进行删除 3 删除文件后 查看磁
  • 矩阵卷积运算过程讲解

    写了那么久的博客 始于Python爬虫 目前专于Java学习 终于有了属于自己的小窝 欢迎各位访问我的个人网站 未来我们一起交流进步 在爬虫处理验证码的过程中接触到矩阵卷积运算 关于该类运算 记录一下自己的心得 理论知识 在讲述卷积过程前
  • windows 串口中断编程_51单片机的中断及其使用方法

    51单片机采用中断方式的串口通信过程及程序分析 所谓中断方式 就是串口收 发标志位出发中断后 在中断中执行既定操作 可通过函数调用来实现 接收数据时 等待中断 gt 然后在中断中接收数据 发送数据时 发送数据 gt 等待中断 gt 然后在中
  • 3-linux集群搭建-Hive

    1 导入包并配置环境变量 导入需要的包 如hive mysql等 解压上传的包到指定文件 tar zxvf apache hive 2 0 0 bin tar gz C opt software 然后进入文件夹下改名 mv apache h
  • Springboot日志系统工作原理

    通过日志信息查找日志框架 当我们启动一个springboot项目时 我们会在控制台看到很多日志信息 如下图所示 那这些日志信息究竟是怎么打印出来的呢 就让我们一起来看看吧 2020 10 13 22 17 41 010 INFO 4569
  • three.js学习之环境贴图

    设置cube纹理加载器 设置cube纹理加载器 const cubeTextureLoader new THREE CubeTextureLoader const envMapTexture cubeTextureLoader load s
  • DS18B20_单总线协议

    H文件 ifndef ONEWIRE H define ONEWIRE H include STC15F2K60S2 H include
  • 腾讯员工人均年薪84.7万,再次冲上热搜

    腾讯2020年员工平均月薪6 76万元 2021年人均月薪7 06万元 消息一出立马登上热搜 由财经网科技刚已发出两分钟的时间 转发和赞同人数超过了1万 2021年腾讯营收5601 18亿元 同比去年增长了16 净利润1237 88亿元 同
  • nodejs:非docker下设置NODE_ENV

    参考 使用process env NODE ENV的正确姿势 掘金
  • Linux Server安全配置基线(等保)

    第1章 概述 1 1 目的 本文档规定了所有维护管理的Linux操作系统的主机应当遵循的操作系统安全性设置标准 本文档旨在指导系统管理人员进行Linux操作系统的安全合规性检查和配置 1 2 适用范围 本配置标准的使用者包括 服务器管理员
  • springmvc组件HandleMapping源码-RequestMappingHandlerMapping

    Copyright 2002 2019 the original author or authors Licensed under the Apache License Version 2 0 the License you may not
  • Java中接口的多态

    多态参数 就像我们现实生活中电脑的usb接口 我们既可以接受手机对象 又可以接受相机对象 等等 体现了接口的多态 查看以下代码 接口 package InterfaceM public interface Interface public
  • tftp服务器权限配置文件,tftp服务器权限配置

    tftp服务器权限配置 内容精选 换一换 华为云帮助中心 为用户提供产品简介 价格说明 购买指南 用户指南 API参考 最佳实践 常见问题 视频帮助等技术文档 帮助您快速上手使用华为云服务 本课程主要针对openEuler操作系统工程师在基
  • VUE-element-admin之配置多级路由菜单

    步骤 routers js中添加如下代码 path usermanagement alwaysShow true 是否显示父级 如果为false则只显示最内层菜单 默认false component Layout hidden false
  • NIO、AIO、BIO的区别

    一 同步阻塞I O BIO 同步阻塞I O 服务器实现模式为一个连接一个线程 即客户端有连接请求时服务器就需要启动一个线程进行处理 如果这个连接不做任何事情会造成不必要的线程开销 可以通过线程池机制来改善 BIO方式适用于连接数目比较少且固
  • Springboot配置的端口号不起作用

    在application yml文件中 进行了如下配置 server port 32088 spring profiles active dev spring application name consul client 启动项目后发现 端
  • ElasticSearch基础(一)

    ElasticSearch 适用场景 日志可视化 ELK组合 方便查询定位业务问题 存储非结构化数据 有些场景存储复杂嵌套的关系类型 使用关系型数据库联合查询将会很繁琐 并且影响性能 这时ElasticSearch是个不错的选择 全文搜索引