Elasticsearch - 将视频目录信息建模为一个索引与多个索引



我需要将一个由电影、电视节目、剧集、电视频道和直播节目信息组成的视频目录建模到 elasticsearch 中。其中一些实体是相关的,有些则不相关。 这些实体的属性是完全不同的,即使有一些共同的属性。

现在,由于我可能需要跨实体进行查询,想象一下客户搜索可能是电影、电视频道或现场活动节目的场景,是拥有 1 个包含标有逻辑类型属性的通用实体的单个索引更好,还是有多个索引更好, 每个实体 1 个(电影、节目剧集、频道、节目(? 此外,其中一些实体(如电影(可以将元数据属性转换为多种语言。

来自关系数据模型数据库,我将创建不同的索引,每个实体一个索引,并为每种语言创建一个语言变体索引。为了获得出色的搜索性能和可用性,有什么建议或更好的方法吗?

是否使用多个索引很大程度上取决于应用程序,所以我不能提供一个明确的答案,而是一些想法。

根据我的经验,索引更像是一种帮助维护和操作的方法,而不是用于数据建模的方法。例如,删除索引比从较大索引中删除一个源中的所有文档要容易得多。或者,如果您支持完全独立的搜索应用程序,这些应用程序不会相互查询数据,则可以使用不同的索引。

但是,当您想要跨数据源查询文档时,将它们保存在一个索引中是有意义的。如果只是为了在索引中的所有项目中获得可比的排名。确保在数据中重复使用具有相似含义的字段(标题、制作年份、艺术家等(对于源特有的字段,我们通常使用带有前缀的字段名称,例如movie_...用于仅电影元数据。

至于语言,您需要使用特定于语言的字段,例如title_en,title_es title_de。理想情况下,在查询时,您知道用户的语言(从浏览器中,因为他们明确选择了它,...(,然后在可用的语言特定字段中进行搜索。请务必在查询和索引时对这些字段使用特定于语言的分析器。

我认为搜索引擎有点像数据库的双重:数据库存储数据,但也可以对其进行索引。搜索引擎索引数据,但也可以存储数据。数据库倾向于规范化架构以消除冗余,搜索引擎最适合非规范化数据以提高查询性能。

相关内容

  • 没有找到相关文章