我在大数据上使用弹性来进行搜索。 (超过十亿行,但只有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%'
预先感谢
答案 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可以进行一些优化,该优化将不检查索引中的每个单项,而仅检查子集。