2017-07-06 79 views
0

我有一个集合(约900k的文档和计数)。您可以在附件中看到的doc方案。我想要通过任何字段组合中的任何子文档中的几乎每个字段进行搜索。例如:如何提高MongoDB中多字段搜索的性能?

# search 1 
updated_at > now() and make.id = 10 and model.id = 20 

# search 2 
region.id = 10 and details.year >= 2000 and details.body = 'sedan' 

设备: 4×的Intel Xeon E5-2650在2.60GHz,16 GB RAM,SSD磁盘,SDD驱动器上8GB交换。
应用程序依赖项: python 3.6,Django,mongoengine,pymongo。

这里更多的信息:
Sample documentIndices setupDatabase and server status

+1

到目前为止您尝试过什么? –

+0

不多,各种指数组合,集结。 –

回答

0

好吧,我结束了elasticsearch + mongo连接器。

2

你可能要考虑一个数据模型,这将是这种类型的访问模式更有效。

MongoDB中的性能是通过确保您的查询已完全索引来实现的,并且所使用的索引可以是fit in memory (or in cache, for WiredTiger)。允许查询多个字段的任意组合的访问模式将是昂贵的,因为它将不可避免地导致尝试对每个字段组合进行索引,这将打败一场失败的战斗。

考虑一个faceted search data model,这将允许有限的一组索引更好地覆盖范围广泛的查询过滤器。