在 Mapping 里面,将 dynamic 参数设置成 strict 可以拒绝索引包含未知字段的文档。 此条 Tips 由 medcl 贡献。

大量的should导致查询变慢,如何优化

Elasticsearch | 作者 tianxia | 发布于2020年10月29日 | 阅读数:1958

由于业务原因,mysql里的 (id,pid)in ((1,2),(3,4)) 这种查询,拼成es里的should查询,条件大概有几万个,性能特别差,还会不断递增,该如何优化。es里没找到支持这种多字段in查询。这种合成1个字段查询,或者id查询,in的条件也特别多。
已邀请:

FFFrp

赞同来自:

用terms 

pineapple

赞同来自:

现有索引的mapping是什么?这个能否做成一个新的字段,转化成数字?比如 new_field: id+pid
然后查询的时候通过should加terms来查询。

God_lockin

赞同来自:

你的should条件是需要参与打分排序的吗?不需要的话可以考虑做filter,或者直接分组拆开,把单一query变成一组query,然后把所有query的结果reduce回来?

qiwu - 90后

赞同来自:

我也不知道

qiwu - 90后

赞同来自:

哈哈

要回复问题请先登录注册