concurrent 选项可启用查询内并行机制。在此模式下, MongoDB Search 会利用更多资源,但会改善每个单独查询的延迟。此功能仅适用于 专用搜索节点。
concurrent 选项限制
当您使用 concurrent 选项运行查询时, MongoDB Search 不保证每个查询都会同时执行。示例,当排队的并发查询过多时, MongoDB Search 可能会回退到单线程执行。
语法
concurrent 通过以下语法实现:
{ "$searchMeta"|"$search": { "index": "<index name>", // optional, defaults to "default" "<operator>": { <operator-specifications> }, "concurrent": true | false, ... } }
行为
concurrent 布尔选项允许您请求MongoDB Search 跨分段并行执行查询,这在许多情况下可以缩短响应时间。您可以为 concurrent 选项设立以下值之一:
true—请求MongoDB Search 以多线程方式运行查询false- 单线程运行查询(默认)
MongoDB Search 允许您按查询控制此行为,仅对繁重且长时间运行的查询启用并发启用,从而最大限度地减少争用并提高整体查询吞吐量。并发执行在大型数据集上尤其有效,因为数据段的数量更多。
例子
考虑以下针对示例数据中的 sample_mflix.movies 集合的查询。该查询指示并发搜索 title 中包含术语 new york 的电影。
1 db.movies.aggregate([ 2 { 3 "$search": { 4 "text": { 5 "path": "title", 6 "query": "new york" 7 }, 8 "concurrent": true 9 } 10 } 11 ])