从 ElasticSearch 的角度来看,这个问题没有解决方案,也不太可能。我已经直接与 ElasticSearch 人员聊天,他们的回答是:“投入更多硬件”。
然而,我找到了一种方法来解决这个问题,以减轻我对该功能的使用。当我分析我保存的搜索数据时,我发现我的搜索包括大约 100,000 个唯一关键字搜索以及各种过滤器排列,创建了超过 1,000,000 个保存的搜索。
如果我查看过滤器,它们是这样的:
- 位置 - 300+
- 工业 - 50+
- ETC...
给出解空间:
100 000 * >300 * >50 * ... ~= > 1 500 000 000
但是,如果我要在过滤器索引中分解搜索并分别索引关键字搜索和过滤器,我最终得到的搜索要少得多:
100 000 + >300 + >50 + ... ~= > 100 350
而且这些搜索本身比原始搜索更小,更简单。
现在我创建第二个(非渗透器)索引,列出所有 1 000 000 个已保存的搜索,并包括来自渗透器索引的搜索组件的 ID。
然后我过滤一个文档,然后执行第二个查询,根据关键字过滤搜索并过滤过滤器结果。我什至能够保留相关性分数,因为这纯粹是从关键字搜索中返回的。
这种方法将显着减少我的过滤器索引内存占用,同时服务于相同的目的。
我想邀请对此方法的反馈(我还没有尝试过,但我会及时通知你)。
同样,如果我的方法成功,您认为值得提出功能请求吗?