gpt4 book ai didi

elasticsearch - Elasticsearch 索引和关系数据库中的索引有什么区别?

转载 作者:行者123 更新时间:2023-11-29 02:46:25 32 4
gpt4 key购买 nike

似乎在 Elasticsearch 中,您会在集合上定义索引,而在关系数据库中,您会在列上定义索引。如果整个集合都被索引了,为什么还需要定义它?

最佳答案

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

数据库中的“索引”是一种二级数据结构,它使 WHERE 查询和 JOIN 速度更快,并且它们通常存储与表中显示的值完全相同的值。您仍然可以拥有未编入索引的列,但是 WHERE 需要 full table scan这在大 table 上很慢。

ES中的“索引”实际上是文档的示意性集合,类似于关系世界中的数据库。您可以在 ES 中拥有不同“类型”的文档,这与 dbs 中的表非常相似。 ES 使您可以灵活地为每个文档的字段定义您是否希望能够检索它、通过它进行搜索或两者兼而有之。有关这些选项的一些详细信息,例如可以从 here 中找到。 ,也与 _source 字段(提交给 ES 的原始 JSON)有关。

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

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

关于elasticsearch - Elasticsearch 索引和关系数据库中的索引有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34539476/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com