求各位大佬关于ElasticSearch查询给一些修改意见

  • 现在有一查询条件需求已查看/未查看的查询条件,在代码里先通过用户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索引里有几千万条数据, 越往后性能越差

软件开发快问快答

2 个赞

直接换数据库,用什么b ES, 直接MPP,不惯着他

2 个赞

那就不惯着了, tmd996给他脸了

image
cc134abe969d738f725189773ac717b
image