用了Elasticsearch,一口气上5T

过滤5万个id,还有其他10个过滤条件,有4个条件,是判断四个field是否包含某个字符串,取或的关系;还有6个条件是and关系,是term匹配,希望耗时控制在200ms以内。

Elasticsearch | 作者 liuliuliu | 发布于2019年04月12日 | 阅读数:1367

存储在es里的数据字段是这样的,一个doc有21个field,类型为keyword或者数字,其中,有四个字符串字段的内容(包括中文、英文)会比较多,可能会有7、8百个中文,其余字段内容比较简单。
文档id的值和一个为long型的field(字段名称为itemId)大小一样。查询过滤时,会给定5万个itemID,和其它10个条件,有4个条件,是判断四个field是否包含某个字符串,取或的关系;还有6个条件是and关系,是term匹配。目前库里该索引用10个分片存数据,但doc
数量在3千万或者1亿条时,(存储3千万条数据占空间50G,存储1亿条数据占空间160G)单线程查询耗时都在400-600ms,即使给定的5万个itemId都不在索引里,耗时也在300-500ms,而我们的目标是将耗时控制在200ms以内。希望大神们能够给一点建议。
已邀请:

kepmoving - 90后

赞同来自:

感觉耗时在 5万个id过滤,query rewrite会耗时,并行查询都会查那么多词。 可以打开profile看下耗时

要回复问题请先登录注册