术语的性能与许多元素有关



我打算在我的所有查询中使用许多术语(取决于30-50k条款)的Terms Query

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

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

谢谢!

表现出现数百个条款后的性能将快速降低:https://github.com/elastic/elasticsearch/issues/18829

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

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

我在Elasticsearch回购中打开了有关此事的问题,并且正如我所担心的,即使使用查找(如果与许多术语"使用,这种查询都非常慢。

另外,我在问题中提到了它,但是我强调了它测试并自己检查了:

用大约20,000个术语过滤使查询非常慢(超过500ms)。

最新更新