条款查询具有许多元素的查询

时间:2017-03-13 06:33:19

标签: elasticsearch elasticsearch-dsl

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

这些术语将使用查找{@ 3}}从另一个索引获取。 Elasticsearch在内部使用它们,所以至少它们不会通过电汇,但查询本身看起来很重。

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

谢谢!

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:0)

我在Elasticsearch回购中关于此事的opened an issue,正如我所担心的,即使使用查询,如果使用多个术语,这种查询也会变得很慢。

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

  

使用大约2万个术语进行过滤会使查询变得非常慢(超过500毫秒)。