Elasticsearch - 跨多种类型的搜索效率

shy*_*yos 8 mapping elasticsearch

让我用一个例子来解释我的问题.假设我有三种不同类型的文档,其中包含一些常见字段,即book, song, magazin

  • name, author, publisher, pageNumber
  • name, singer, publisher, length等.
  • Magazin的拥有name, company, publisher, pageNumber等.

如您所见,名称发布者字段是所有三种类型文档的公共字段. pageNumberMagazinBook的特色.其余字段独立于其他类型的文档.

我将这些数据存储在相同的索引上.我也可以存储这些数据,

  • 具有单一类型,例如Object,其中包含category(Book,Song,Magazin)字段.我首先创建索引时给出映射详细信息.因此,在此选项中,书籍将具有长度字段,但它将为空,因为它不是书籍功能.

  • 或_type字段上的三种类型的文档.

我的查询和方面将在公共领域.以下哪种方法的查询和方面时间较少?

/index/book,song,magazin/ -d {myQuery}不是更有效 /index/object/ -d {myQuery && (category = book || category = song || category = magazin)}

谢谢你的回答.

Ale*_*vik 8

Lucene中不存在Elasticsearch的类型概念.

索引文档时,文档的类型将被编入索引.然后,当仅搜索某些类型时,Elasticsearch将隐式地将索引类型的过滤器添加到查询中.

因此,你的最后一种方法,你有你category的筛选器除了隐式_type:object的筛选器.从本质上讲,你没有在这里使用Elasticsearch的类型获得任何东西.