当前位置: 首页 > 面试题库 >

Elasticsearch中的索引是什么

米夕
2023-03-14
问题内容

Elasticsearch中的索引是什么?一个应用程序有多个索引还是只有一个索引?假设您为某些汽车制造商构建了一个系统。它涉及人员,汽车,零件等。您是否有一个名为制造商的索引,或者您有一个人的索引,一个用于汽车的索引和一个用于零备件的索引?有人可以解释吗?


问题答案:

很好的问题,答案比人们期望的要细腻得多。您可以将索引用于几种不同的目的。

关系指标

最简单,最熟悉的布局将克隆您从关系数据库中获得的期望。您可以(非常粗略地)想到像数据库这样的索引。

  • MySQL =>数据库=>表=>行/列
  • ElasticSearch =>索引=>类型=>具有属性的文档

ElasticSearch集群可以包含多个Indices(数据库),而数据库又包含多个Types(表)。这些类型包含多个Documents(行),每个文档都有Properties(列)。

因此,在您的汽车制造方案中,您可能会有一个SubaruFactory索引。在此索引内,您有三种不同的类型:

  • People
  • Cars
  • Spare_Parts

然后,每种类型都包含与该类型相对应的文档(例如,Subaru Imprezza文档位于该Cars类型内部。此文档包含有关该特定汽车的所有详细信息)。

搜索和查询采用以下格式:http:// localhost:9200 / [index] / [type] /
[operation]

因此,要检索Subaru文档,我可以这样做:

  $ curl -XGET localhost:9200/SubaruFactory/Cars/SubaruImprezza

记录指标

现在,现实是索引/类型比我们在RDBM中使用的数据库/表抽象要灵活得多。可以将它们视为方便的数据组织机制,并根据设置数据的方式获得更多的性能优势。

为了演示一种截然不同的方法,许多人使用ElasticSearch进行日志记录。一种标准格式是为每天分配一个新索引。您的索引列表可能如下所示:

  • 日志-2013-02-22
  • 日志-2013-02-21
  • 日志-2013-02-20

ElasticSearch允许您同时查询多个索引,因此这不是问题:

  $ curl -XGET localhost:9200/logs-2013-02-22,logs-2013-02-21/Errors/_search=q:"Error Message"

它将同时搜索最近两天的日志。由于日志的性质,这种格式具有优势-
大多数日志从不查看,并且它们以线性时间流进行组织。为每个日志创建索引更合乎逻辑,并且可以提供更好的搜索性能。

用户指标

另一种截然不同的方法是为每个用户创建索引。假设您有一些社交网站,每个用户都有大量随机数据。您可以为每个用户创建一个索引。您的结构可能类似于:

  • 扎克指数
    • 爱好类型
    • 好友类型
    • 图片类型
  • 弗雷德指数
    • 爱好类型
    • 好友类型
    • 图片类型

请注意,如何以传统的RDBM方式轻松完成此设置(例如,将“爱好” /“朋友”
/“图片”作为类型的“用户”索引)。然后,所有用户都将被扔进一个单一的巨型索引中。

取而代之的是,有时出于数据组织和性能的原因将数据分开是有意义的。在这种情况下,我们假设每个用户都有 很多
数据,并且我们希望他们分开。ElasticSearch可以让我们为每个用户创建索引没有问题。



 类似资料:
  • 本文向大家介绍Elasticsearch的倒排索引是什么?相关面试题,主要包含被问及Elasticsearch的倒排索引是什么?时的应答技巧和注意事项,需要的朋友参考一下 面试官:想了解你对基础概念的认知。 解答:通俗解释一下就可以。 倒排索引是搜索引擎的核心。搜索引擎的主要目标是在查找发生搜索条件的文档时提供快速搜索。倒排索引是一种像数据结构一样的散列图,可将用户从单词导向文档或网页。它是搜索引

  • 问题内容: 什么是SQL中的 索引 ?您可以解释或参考以清楚地理解吗? 我应该在哪里使用索引? 问题答案: 索引用于加速数据库中的搜索。MySQL在此主题上有一些不错的文档(也与其他SQL Server相关):http : //dev.mysql.com/doc/refman/5.0/en/mysql- indexes.html 索引可用于有效地查找与查询中某一列匹配的所有行,然后仅遍历表的该子集

  • 本文向大家介绍ElasticSearch中的集群、节点、索引、文档、类型是什么?相关面试题,主要包含被问及ElasticSearch中的集群、节点、索引、文档、类型是什么?时的应答技巧和注意事项,需要的朋友参考一下 群集是一个或多个节点(服务器)的集合,它们共同保存您的整个数据,并提供跨所有节点的联合索引和搜索功能。群集由唯一名称标识,默认情况下为“elasticsearch”。此名称很重要,因为

  • 问题内容: 似乎在elasticsearch中,您将在集合上定义索引,而在关系数据库中,您将在列上定义索引。如果整个集合都已建立索引,为什么需要对其进行定义? 问题答案: 不幸的是,使用了“索引”一词,这意味着ES和关系数据库中的一些事物(在编辑中非常不同),因为它们针对不同的用例进行了优化。 数据库中的“索引”是辅助数据结构,它使查询和查询变得快速,并且它们通常存储的值与表中显示的值完全相同。您

  • 我阅读了关于在Elasticsearch中索引文档的教程。例如,批量索引。我有个问题,当为循环中的一个项创建带有两个键的数组时,是否正确: 为什么循环中有两个数组初始化$params['body][]?必须使用与my_字段相同的键进行索引设置? 我的意思是一种情况,当有关index的所有信息都由一个键(index)添加到数组中时: 同样在搜索查询后,我得到错误: 消息:非法字符串偏移量“匹配”在所

  • 如果Elasticsearch索引中的多个类型具有相同名称的字段,则这些字段必须具有相同的映射,该映射将尝试创建“foobar”属性作为字符串和长“。。。 例如,如果您尝试放置以下索引映射: ...将返回以下错误 以下内容来自elasticsearch网站: 不同类型字段之间的冲突 在两种不同类型中具有相同名称的同一索引中的字段必须具有相同的映射,因为它们在内部由相同的字段支持。尝试更新存在于多个