首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Elastic在使用like和or进行搜索时速度很慢?

为什么Elastic在使用like和or进行搜索时速度很慢?
EN

Stack Overflow用户
提问于 2019-05-06 16:27:39
回答 1查看 38关注 0票数 0

我在大数据上使用elastic for searh。(超过十亿行,但只有2列: id和标题)

当我搜索id关键字时,速度很快,但如果我用“like”搜索标题上的文本,则需要很长时间。

慢速搜索案例:

代码语言:javascript
复制
       CAPTION LIKE '%TES%'
    OR CAPTION LIKE '%ASD%'
    OR CAPTION LIKE '%DSSS%'
    OR CAPTION LIKE '%VBCVB%'
    OR CAPTION LIKE '%ASDAS%'
    OR CAPTION LIKE '%GDGDF%'

提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-06 16:40:23

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

如果你想要更快的结果,最好使用基于ngram的策略,但这是以索引时间为代价的,索引内容的时间更长,磁盘空间也更大。

折衷的办法可能是不使用第一个%符号,比如:

代码语言:javascript
复制
   CAPTION LIKE 'TES%'
OR CAPTION LIKE 'ASD%'
OR CAPTION LIKE 'DSSS%'
OR CAPTION LIKE 'VBCVB%'
OR CAPTION LIKE 'ASDAS%'
OR CAPTION LIKE 'GDGDF%'

因为Elasticsearch可以做一些优化,不会检查索引中的每一个词,而只检查一个子集。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56001437

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档