【发布时间】:2017-12-22 16:04:17
【问题描述】:
让我用一个例子来解释我的问题。
假设我有三种不同类型的文档,其中包含一些常见字段,即book, song, magazin
-
书有
name, author, publisher, pageNumber等。 -
歌曲有
name, singer, publisher, length等。 -
杂志有
name, company, publisher, pageNumber等。
如您所见,name 和 publisher 字段是所有三种文档类型的通用字段。 pageNumber 是 Magazin 和 Book 的功能。其余字段独立于其他类型的文档。
我会将这些数据存储在同一个索引上。我也可以存储这些数据,
只有一个类型,例如 Object,它有一个
category(Book, Song、Magazin)字段。我在首次创建索引时提供映射详细信息。因此,在此选项中 book 将具有长度字段,但它将为空,因为它不是 Book 功能。或 _type 字段上的三种类型的文档。
我的查询和构面将位于公共字段上。以下哪种方法的查询和分面时间更短?
/index/book,song,magazin/ -d {myQuery} 比 /index/book,song,magazin/ -d {myQuery} 更有效吗
/index/object/ -d {myQuery && (category = book || category = song || category = magazin)}?
感谢您的回答。
【问题讨论】:
-
唯一知道的方法是生成一些测试数据并自己进行基准测试。如果不这样做,你将只剩下一个宗教决定,基于信仰而不是事实,被任何类型的皈依者引导走这条或那条道路,以首先吸引你。
标签: mapping elasticsearch