为什么用like和or搜索时Elastic的速度很慢?

时间:2019-05-06 08:27:39

标签: elasticsearch

我在大数据上使用弹性来进行搜索。 (超过十亿行,但只有2列:id和标题)

当我搜索id关键字时,它很快,但是如果我在带有“喜欢”的标题上搜索文本,则需要花费很长时间。

搜索速度慢的情况:

       CAPTION LIKE '%TES%'
    OR CAPTION LIKE '%ASD%'
    OR CAPTION LIKE '%DSSS%'
    OR CAPTION LIKE '%VBCVB%'
    OR CAPTION LIKE '%ASDAS%'
    OR CAPTION LIKE '%GDGDF%'

预先感谢

1 个答案:

答案 0 :(得分:2)

因为您必须对整个索引进行全面扫描,以检查每个术语是否匹配。 这就是为什么它在文档中明确指出它很慢。

如果想要更快的结果,最好使用基于ngram的策略,但这会带来索引时间更多的时间来索引内容和更多磁盘空间。

妥协可能不使用第一个%符号,例如:

   CAPTION LIKE 'TES%'
OR CAPTION LIKE 'ASD%'
OR CAPTION LIKE 'DSSS%'
OR CAPTION LIKE 'VBCVB%'
OR CAPTION LIKE 'ASDAS%'
OR CAPTION LIKE 'GDGDF%'

然后,Elasticsearch可以进行一些优化,该优化将不检查索引中的每个单项,而仅检查子集。