5

我计划Terms Query在我的所有查询中使用包含许多术语(取决于情况,最多 40-50k 术语)。

这些术语将使用此处解释的查找从另一个索引中获取。Elasticsearch 在内部使用它们,因此至少它们不会通过线路,但查询本身看起来很繁重。

我想知道查询性能是否会很好。无论如何,我正计划进行压力测试,但不确定这是否会很好地升级。有人对这类查询有过经验,或者知道 Elasticsearch 如何在内部处理它们?

谢谢!

4

2 回答 2

4

数百个术语后的性能会快速下降: https ://github.com/elastic/elasticsearch/issues/18829

以下是最初提到的一个 uber 线程: https ://github.com/elastic/elasticsearch/issues/11511#issuecomment-224028056

ES 将在您的分片中单独搜索每个术语,因此随着添加更多术语,它会使集群陷入困境。与任何 Elasticsearch 一样,调整分片数量(在您的情况下为副本)、节点计数和其他配置选项可能会有所帮助。我建议进行性能测试以了解您正在处理的内容,但最初不要期望任何东西。

于 2017-03-13T07:13:13.100 回答
1

我在 Elasticsearch 存储库中打开了一个关于这个问题的问题,正如我所担心的,即使使用查找,如果与许多术语一起使用,这种查询会变得非常慢。

另外,我在问题中提到了它,但我对其进行了压力测试并自己检查了它:

过滤大约 20,000 个术语会使查询变得非常慢(超过 500 毫秒)。

于 2018-02-22T11:48:02.410 回答