弹性搜索索引和关系数据库中的索引有什么区别?

2024-01-23

似乎在弹性搜索中,您将在集合上定义索引,而在关系数据库中,您将在列上定义索引。如果整个集合都建立了索引,为什么还需要定义它?


不幸的是,“索引”一词在 ES 和关系数据库中的含义略有不同(编辑:非常),因为它们针对不同的用例进行了优化。

数据库中的“索引”是一种辅助数据结构,它使得WHERE查询和JOIN速度很快,而且它们通常存储的值与表中显示的值完全相同。您仍然可以拥有未索引的列,但是WHERE需要一个全表扫描 https://en.wikipedia.org/wiki/Full_table_scan这在大桌子上很慢。

ES中的“索引”实际上是文档的示意性集合,类似于关系世界中的数据库。 ES 中可以有不同“类型”的文档,与 dbs 中的表非常相似。 ES 使您可以灵活地定义每个文档的字段,无论您希望能够检索它、通过它进行搜索还是两者兼而有之。有关这些选项的一些详细信息可以从例如here https://stackoverflow.com/questions/17103047/why-do-i-need-storeyes-in-elasticsearch,也与_source字段(提交给ES的原始JSON)。

ES 使用倒排索引来有效地查找匹配文档,但最重要的是,它通常将字符串“规范化”为标记,以便可以执行准确的自由文本搜索。例如,句子可能会被分割成单独的单词,单词会被标准化为小写等,以便搜索“holland”将匹配文本“Vacation at Holland 2015”。

如果某个字段没有倒排索引,则无法对其进行任何搜索(与 dbs 的全表扫描不同)。有趣的是,您还可以定义字段,以便可以使用它们进行搜索,但无法检索它们,这在最小化磁盘和 RAM 使用量很重要时非常有用。

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

弹性搜索索引和关系数据库中的索引有什么区别? 的相关文章

  • 聚合多个递归logstash

    我正在使用带有输入 jdbc 的 Logstash 并且希望通过聚合将一个对象嵌入到另一个对象中 如何使用添加递归 即在另一个对象中添加一个对象 这是一个例子 index my index type test id 1 version 1
  • 在 MySQL 数据库中保持 TEXT 字段唯一的最佳方法

    我想让 TEXT 字段的值在我的 MySQL 表中唯一 经过小型研究 我发现由于性能问题 每个人都不鼓励在 TEXT 字段上使用 UNIQUE INDEX 我现在想用的是 1 创建另一个字段来包含 TEXT 值的哈希值 md5 text v
  • Facet从elasticsearch中的对象获取所有键

    假设我有以下文档 title Some Title options key5 1 key3 0 key1 1 title Some Title options key2 0 key3 0 key5 1 我想从中获取所有钥匙options使用
  • MySQL 中 INDEX、PRIMARY、UNIQUE、FULLTEXT 之间的区别?

    创建MySQL表时PRIMARY UNIQUE INDEX和FULLTEXT有什么区别 我将如何使用它们 差异 KEY or INDEX指的是普通的非唯一索引 索引的非不同值是允许的 因此索引may索引的所有列中包含具有相同值的行 这些索引
  • 连接所有 PostgreSQL 表并创建 Python 字典

    我需要加入allPostgreSQL 表并将它们转换为 Python 字典 数据库中有72张表 总列数大于1600 我编写了一个简单的 Python 脚本 该脚本连接多个表 但由于以下原因无法连接所有表内存错误 https gist git
  • 如何在 Postgresql 中将 GIST 或 GIN 索引与 hstore 列一起使用?

    我正在使用 postgresql 9 3 的 hstore 我正在尝试对 hstore 列使用索引就像文档所述 http www postgresql org docs 9 3 static hstore html 我的问题是索引似乎没有被
  • 将 CSV 文件中的数字数据更改为文本

    下面的查询是抓取数据并创建一个 CSV 文件 我遇到的问题是名为 SPLE 的源在数据库中存储数字为 0 1 50 的数据 然而 在 CSV 中 这些数字被收集在 CSV 中 我希望在创建 CSV 时 这些数字能够代表诸如以下的单词 0 T
  • 目录索引不起作用

    我使用 apache2 来托管一个网站 我的目录中有index html和index php 我打开 etc apache2 apache2 conf并添加一行 DirectoryIndex index php index html ind
  • 当我使用完成建议器时,如何获得没有重复的独特建议?

    我在我的环境中使用弹性 5 1 1 我在字段名称上选择了完成建议器post hashtags带有一个字符串数组来提供建议 我收到前缀 inv 的响应如下 Req POST hashtag search pretty filter path
  • ElasticSearch bool should_not 过滤器

    我是elasticsearch的新手 所以我的问题是 bool 过滤器有 3 个部分 must All of these clauses must match The equivalent of AND must not All of th
  • Elasticsearch 日期范围交集

    我在弹性搜索中存储类似以下信息的信息 timeslot start at 2013 02 01 timeslot end at 2013 02 03 鉴于我有另一个日期范围 例如 从用户输入给出 我想搜索相交的时间范围 与此类似 确定两个日
  • 如何设计具有主键和多值属性的表?

    我对数据库设计很感兴趣 现在正在阅读相应的文献 通过这本书 我遇到了一个让我感到不确定的奇怪例子 有一个关系 在此表中 我们有一个复合主键 StudentID Activity 但ActivityFee部分依赖于表的key Activity
  • Spring Data - MongoDB 索引 DBRef

    我正在使用 spring data mongodb 1 2 0 RELEASE 我有两个类 A 和 B 其中 B 引用了 A 并且用 DBRef 进行了注释 Class A Document collection a public clas
  • 使用 python 聚合 elasticsearch-dsl 中的字段

    有人可以告诉我如何编写 Python 语句来聚合 求和和计数 有关我的文档的内容吗 SCRIPT from datetime import datetime from elasticsearch dsl import DocType Str
  • 使用 Ruby on Rails 索引多列

    我在 Mysql 数据库中有一个表 我想在其上使用多列索引 如何在不使用 mysql 控制台的情况下在 Rails 中执行此操作 在迁移定义中 您可以这样做 add index table name column1 column2
  • Elasticsearch NodeBuilder 与 TransportClient

    对于其他 Elasticsearch 开发人员来说 这可能是一个非常简单 而且愚蠢 的问题 这两者之间有什么区别 我正在从 Java Web 应用程序连接到远程 Elasticsearch 服务器 到目前为止我一直在使用 Transport
  • Elasticsearch GET API 获取分片大小

    在 Elasticsearch 2 3 3 中 有没有办法使用返回 JSON 的 GET API 获取分片大小 目前我找到了以下几种获取shard size的方法 这两种方法都存在问题 recovery gt 使用 JSON 进行响应并提供
  • 使用绑定和空值命中 Oracle 索引的最佳查询

    我有一个表 该表在多个列上有一个索引 其中许多列可以为空 CREATE UNIQUE INDEX UX MYTABLE A B C D E ON MYTABLE A B C D E 现在 我在 C 代码中尝试检查该表并精确命中索引 对于每个
  • 为什么 Mongohint 可以使查询运行速度提高 10 倍?

    如果我使用explain 从shell运行mongo查询 获取所使用的索引的名称 然后再次运行相同的查询 但使用hint 指定要使用的相同索引 解释计划中的 millis 字段是显着下降 例如 没有提供任何提示 gt gt db event
  • 即使将“enable_seqscan”设置为关闭后,也未使用数组列上的 GIN 索引?

    根据推荐this https stackoverflow com questions 4058731 can postgresql index array columns comment10357041 4059785评论 我建立了一个 i

随机推荐

  • 如何从私有 Docker Hub 存储库远程提取 Docker 映像?

    我在 Docker Hub 私有存储库中有多个映像 我需要使用 Docker 远程 Rest API 将这些映像拉到远程计算机上 有没有办法远程验证 这些是我想远程拨打的电话 docker login docker pull myrepo
  • 无法使用 Youtube Data API 删除视频

    无法使用 Youtube Data API 删除视频 我正在使用 Python 客户端库 所有这些似乎都是直接来自文档 所以我真的很困惑为什么它不起作用 这是我的功能 def delete youtube video by id video
  • 使用 asort() 对包含日期的数组进行排序无法正常工作

    这是未排序的数组 格式为 dd mm yyyy array 6 7 0 gt string 10 28 04 2014 7 1 gt string 10 29 04 2014 7 2 gt string 10 30 04 2014 7 3
  • 软件许可计划[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我设计了以下机制 以便在不直接连接到服务器的情况下许可软件 看起来很简单 但我没有发现任何严重的缺陷 我计划使用非对称加密 以便从 1 个服务器
  • 控制台中的文本/光标定位

    你们中有人建议我如何在 x 出口顶部显示时间 我目前正在使用 Console Write 和 ch gotoxy 将光标设置到不同的位置 顺便说一句 我的光标是 293 旁边的 我还没有尝试过 但是创建一个只写入时间的不同线程 或新 TPL
  • MeshNormalMaterial 不适用于 Three.js 自定义几何体:几何体渲染为黑色

    我正在尝试使用 Three js 通过声明其向量和面来手动构造一个立方体 我可以使用下面的代码来完成此操作 但是 该材质似乎没有按预期工作 而是立方体以纯黑色渲染 var geom new THREE Geometry var v1 new
  • 我可以在 Google TV 开发盒上安装 Android 应用程序吗?

    我有一个谷歌电视开发盒 我可以在上面安装一个应用程序吗 如果是这样 怎么办 您现在可以使用 adb 连接并安装 3 1 版本的应用程序 https code google com tv android docs gtv debug html
  • GraphDB可视化图表不显示所有三元组

    在我的图表中我有以下断言 prefix
  • CTP 4 更新后的 Visual Studio 2013(Cordova 模板)频繁崩溃

    将 Visual Studio 2013 升级到 CTP4 并使用 Cordova 模板后 每次单击 保存 并强制我重新启动时 我的 Visual Studio 都会冻结 使用 CTp3 多设备混合应用程序模板运行良好 有人有同样的问题或解
  • 使用 Swift 查找字符串中的第一个不重复字符

    这会找到数组中的重复项 但我正在寻找能够找到字符串中第一个非重复字符的东西 我一直在试图找出一种方法来做到这一点 但我无法弄清楚 这是我得到的最接近的 var strArray P Q R S T P R A T B C P P P P P
  • MS Access 不需要的断点

    我有一个复杂的 MS Access 2013 数据库 其中包含数十个表单 在其中一个表单上 我有一个带有 vba 过程的按钮 它从 MS SQL ADODB 返回值并将它们放入文本框中 问题是 每当我单击此按钮时 它就会进入编译菜单 就好像
  • FOSRestBundle + Symfony 3.4:无法识别其余类型

    我正在使用带有 FOSUserBundle 的 Symfony 3 4 我已经从 Symfony 3 3 导入了我的项目 现在出现错误 无法确定由 api yaml 标识的控制器的类 在 api yaml 中 正在从 home user p
  • 谷歌分析不适用于 iframe 中嵌入的网站

    我的网站上运行谷歌分析 mydomain com 我不拥有的另一个网站 anotherdoamin com 将我的网站嵌入到其页面的 iframe 中 我希望我的网站分析能够在 anotherdomain com 的 iframe 中工作
  • Android 设备可以充当 iBeacon 吗?

    Android 设备能否充当 iBeacon 并确定其他 Android 设备何时进入其范围 其他 Android 设备需要打开蓝牙吗 如果顾客来到我的商店 但他的设备上没有安装我的应用程序 iBeacon 可以工作吗 还是必须先安装该应用
  • 如何引用 TypeScript 文件而不遇到“require is not Defined”错误

    我首先要说的是我不具备 TypeScript 或 JavaScript 的高级知识 我做了什么 我正在制作一个准系统 TypeScript 算法玩具盒 它实现了来自算法基础 布拉萨德和布拉特利 我所做的是打开一个本地 HTML 文件 然后转
  • 缺少 3 个必需的位置参数 Python

    是的 我正在编写 python 代码 并且收到此类型错误 TypeError printE 缺少 3 个必需的位置参数 emp2 emp3 和 emp4 for emmp in employee print printE emmp def
  • Tensorflow Inception FeedInputs:无法找到 feed 输出输入

    我尝试了张量流网站中的初始教程 https www tensorflow org versions r0 12 how tos image retraining https www tensorflow org versions r0 12
  • 如何让两个SQL查询真正异步

    我的问题是基于一个真实的项目问题 但我从未使用过System Threading Tasks库或执行任何涉及线程的严肃编程 因此我的问题可能是缺乏有关特定库的知识以及对异步在编程方面的真正含义的更普遍的误解 所以我的真实案例是这样的 我需要
  • 从 AppDelegate 调用委托函数不起作用

    我试图在 AppDelegate 中调用委托函数 但似乎它永远不会被调用 import UIKit UIApplicationMain class AppDelegate UIResponder UIApplicationDelegate
  • 弹性搜索索引和关系数据库中的索引有什么区别?

    似乎在弹性搜索中 您将在集合上定义索引 而在关系数据库中 您将在列上定义索引 如果整个集合都建立了索引 为什么还需要定义它 不幸的是 索引 一词在 ES 和关系数据库中的含义略有不同 编辑 非常 因为它们针对不同的用例进行了优化 数据库中的