我目前有一个包含大约100,000个文档的PyMongo集合。我需要对每个文档执行正则表达式搜索,针对大约1,800个值检查每个文档,以查看特定字段(这是一个数组)是否包含1,800个字符串中的一个。在测试了各种使用正则表达式的方法之后,例如编译成正则表达式,多处理和多线程,性能仍然很糟糕,大约需要30-45分钟。
我用来查找字符串末尾的值的当前正则表达式是:
rgx = re.compile(string_To_Be_Compared + '$')
然后使用标准的pymongo find查询运行:
coll.find( { 'field' : rgx } )
我想知道是否有人建议以更优化的方式查询这些值?理想情况下,返回所有值的搜索应该不到5分钟。最好的行动方案是使用像ElasticSearch这样的东西还是我错过了一些基本的东西?
谢谢你的时间