-
现在有一查询条件需求
已查看/未查看的查询条件
,在代码里先通过用户id拿到该用户所有点击过的数据id
,然后通过es的mustNot()
和should()
方法来查询出来数据 -
这样只是简单的实现了功能,但是当某一用户的
数据id
达到了几万甚至十几万,这样通过过滤条件查询携带的参数过多"The number of terms [171970] used in the Terms Query request has exceeded the allowed maximum of [65536].
表示terms携带的id太多了,通过分组60000一组勉强解决问题 -
而后有出现了
reason=too_many_clauses: maxClauseCount is set to 4096
,通过修改配置文件也勉强解决了
在最后想大佬们给一个思路来解决这个问题,因为在es里的这个数据对于每个用户的状态都是不一样的,而且es索引里有几千万条数据, 越往后性能越差