当前位置:  开发笔记 > 前端 > 正文

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

如何解决《弹性搜索索引与关系数据库中的索引有什么区别?》经验,为你挑选了1个好方法。

似乎在弹性搜索中,您将在集合上定义索引,而在关系数据库中,您将在列上定义索引.如果对整个集合编制索引,为什么需要定义它?



1> NikoNyrh..:

不幸地使用了"索引"这个词,这意味着在ES和关系数据库中略微(编辑:非常)不同的东西,因为它们针对不同的用例进行了优化.

数据库中的"索引"是一种辅助数据结构,它使WHERE查询JOIN快速,并且它们通常存储与表中显示的值完全相同的值.您仍然可以拥有未编制索引的列,但是然后WHERE需要进行全表扫描,这对大型表来说很慢.

ES中的"索引"实际上是文档的示意图集合,类似于关系世界中的数据库.您可以在ES中使用不同的"类型"文档,与dbs中的表格非常相似.ES为您提供了为每个文档的字段定义是否能够检索,搜索或同时搜索两者的灵活性.关于这些选项的一些细节可以在这里找到,也可以在_source字段(提交给ES的原始JSON)中找到.

ES使用反向索引来有效地查找匹配文档,但最重要的是,它通常将字符串"规范化"为标记,以便可以执行准确的自由文本搜索.例如,句子可能被分成单个单词,单词被标准化为小写等,因此搜索"荷兰"将匹配文本"2015年荷兰假期".

如果字段没有倒排索引,则无法对其执行任何搜索(与dbs的全表扫描不同).有趣的是,你也可以定义字段,以便你可以使用它们进行搜索,但是你无法将它们检索回来,在最小化磁盘和RAM使用很重要时,这主要是有益的.

推荐阅读
小妖694_807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有