小编Chr*_*ine的帖子

为什么MongoDB分片的全文搜索比直接通过集群管理器(mongos)实例要快得多?

我对MongoDB中的全文搜索性能非常不满,所以我一直在寻找开箱即用的解决方案.在8个强大的机器(4个冗余分片)中分享了相对较少的2500万份文档,我看到一些查询需要10秒钟.那太糟糕了.在云雀上,我直接尝试了对分片的10秒查询,似乎mongos将查询串行发送到分片,而不是并行发送.在4个分片中,我看到一个分片上的搜索时间为2.5秒,而另外3个分片的搜索时间分别为2秒.这总共不到8.5秒,但它需要10到mongos.捂脸.

有人可以确认这些查询是否正在串行运行?或者提供一些其他解释?

直接查询分片有哪些陷阱?

我们在4.0上,查询看起来像这样:

db.items.aggregate(
[
   { "$match" : {
    "$text" : { "$search" : "search terms"}
      }
   }, 
   { "$project": { "type_id" : 1, "source_id": 1 } },
   { "$facet" : { "types" : [ { "$unwind" : "$type_id"} , { "$sortByCount" : "$type_id"}] , "sources" : [ { "$unwind" : "$source_id"} , { "$sortByCount" : "$source_id"}]}}
]
);
Run Code Online (Sandbox Code Playgroud)

我之前犯了一个错误,这是发送问题的查询.我与一位MongoDB专家进行了交谈,并了解了正在发生的事情的一大部分(我认为),但很高兴看到别人有什么话要说,所以我可以支付赏金并使其正式化.

full-text-search sharding mongodb

15
推荐指数
1
解决办法
367
查看次数

标签 统计

full-text-search ×1

mongodb ×1

sharding ×1