你不会是程序猿吧?

两个索引之间如何关联筛选?

Elasticsearch | 作者 wild | 发布于2021年08月28日 | 阅读数:1543

想请教下社区大佬们,现有如下业务:
索引A
存储:手机号,信息
索引B
存储:黑名单手机号
查询A时需要根据B进行筛选(包含在B内的手机剔除掉)

我现在想到的思维一直停留在表联查。
看文档,官方提供的解决方案中
1.先查B,在拿B的结果当作A的条件。但是B存储的黑名单是会增长,数据量只会越多
2.把B的数据填充到A中,貌似根本不太适用这个需求。

还望社区大佬们指点一二
 
已邀请:

liujiacheng

赞同来自:

我觉得方法2很适合,为什么你觉得不适合呢?方案2是索引A中增加一个字段,表明它是否是黑名单。
之前对索引B的增删改查都改为对索引A的某个字段的增删改查
比如update by query。
 
当然还有一个方案,就是在查A和查B,在程序中做合并过滤。

kirito - 专注es

赞同来自:

es没有关联(类似于mysql join),但可以使用其他方法来替代。
一般最常规的操作是你可以把所有的手机号录入在一个索引中,通过某一个字段来标识是否为黑名单(例如:filter:1,黑名单 2,白名单 使用数字考虑到未来可能还有其他的筛选情况),在查询条件中使用term筛选filter为2的即可达到业务需求。

要回复问题请先登录注册