【发布时间】:2013-12-12 03:52:46
【问题描述】:
我们将少量多态文档子类型存储在单个索引中(例如,假设我们存储具有汽车、货车、摩托车和蝙蝠车子类型的车辆)。
目前,这些子类型(例如制造商、车轮数量、令人敬畏的交通方式排名)的领域有 >80% 的共性。
标准情况是搜索所有类型,但有时用户希望将结果过滤到子类型的子集:只查找具有...的汽车。
将这些子类型建模为不同的 ElasticSearch 类型与使用某些特定于应用程序的字段将它们建模为单一类型以区分子类型,在搜索/索引时会产生多少开销(如果有)?
我已经浏览了几个相关的答案,但找不到我的确切问题的答案。
非常感谢!
【问题讨论】:
-
根据我之前使用 Lucene/SOLR 的经验,我假设这两种方法在 Lucene 索引级别的外观和性能大致相同。无论哪种方式,它们都将共享相同的架构。唯一的区别是 ElasticSearch 将类型差异视为语义级别,而不是应用程序必须管理差异。我的理解正确吗?
-
是的,这听起来很对。我强烈不同意 Rotem 在他的回答中所说的:如果您提议的类型对于同一个字段键有不同的类型,它们不应该存储在同一个索引中,因为这些值将存储在相同的字段,这意味着如果它们都在查询期间加载,您将得到奇怪的结果和/或失败的查询和后端异常。 Obligatory example 显示了一些方面是如何丢失的,因为该字段被假定为数字,在分面期间无法计算字符串类型字段。
标签: elasticsearch