【发布时间】:2012-12-02 06:54:08
【问题描述】:
当我通过 findOne / find 在 Mongodb 中搜索相同的查询词时,findOne 比 find 快得多。
在我的搜索案例中,我只需要知道它是否存在,所以我希望搜索引擎选择一个并返回,然后快速运行我的搜索查询。
当我在 ElasticSearch 中搜索任何内容时,我总能得到搜索结果的总数,它不是很慢,但没有我预期的那么快。
仅供参考,我的 elasticsearch 存储大约 200 万个文档,一些搜索词提示超过 20 万个文档,这可能需要 500 多毫秒。
我正在寻找像 Mongodb 的 findOne 这样的函数,它可以将我的查询时间减慢到 100 毫秒以下。
或者还有其他解决方案吗?
谢谢。
【问题讨论】:
-
我认为解决方案是通过指定结果集大小来限制搜索结果elasticsearch.org/guide/reference/api/search/from-size.html
-
即使我在搜索查询中设置了大小,elasticsearch 仍然可以获得总数,所以我猜它查看所有索引,这不是快速的解决方案
-
啊,所以:问题不在于限制结果集。但是即使使用 ElasticSearch 仍然可以找到所有可能的结果并返回一个不需要的计数,这会延迟它不应该找到的请求。
-
@DanD。是的。使用 mongodb findOne,19 次查询在 500 毫秒内,但 elasticsearch 花费近 5 秒来做同样的事情。我想知道 elasticsearch 是否适合做这项工作
-
我认为您可能会测试限制过滤器elasticsearch.org/guide/reference/query-dsl/limit-filter.html,因为stackoverflow.com/questions/8583344/… 的答案报告说它将提供请求的行为。如果是这样,那么这个问题就是那个问题的重复。
标签: elasticsearch