从ElasticSearch的角度来看,没有解决此问题的方法,也不可能。我已经直接与ElasticSearch的家伙聊天,他们的回答是:“向它扔更多的硬件”。
但是,我已经找到了解决此问题的方法,以减轻我对该功能的使用。当我分析保存的搜索数据时,我发现我的搜索由大约100
000个唯一关键字搜索以及各种过滤器排列组成,这些搜索创建了超过1000000个保存的搜索。
如果我看一下过滤器,它们就是:
- 位置-300+
- 工业-50+
- 等等…
提供以下解决方案空间:
100 000 > 300 > 50 * …〜=> 1500万
但是,如果我要分解搜索并在渗滤器索引中分别为关键词搜索和过滤器建立索引,那么最终的搜索量会少得多:
100000 +> 300 +> 50 + …〜=> 100350
而且这些搜索本身比原始搜索要小且不那么复杂。
现在,我创建第二个(非过滤器)索引,列出所有已保存的1000000次搜索,并包括过滤器索引中搜索组件的ID。
然后,我对文档进行渗滤,然后执行第二个查询,以针对关键字过滤搜索并过滤渗滤器结果。我什至能够保留相关性分数,因为它仅从关键字搜索中返回。
这种方法将大大减少我的过滤器索引的内存占用,同时达到相同的目的。
我想邀请您就此方法提供反馈(我尚未尝试过,但会及时通知您)。
同样,如果我的方法成功了,您认为值得提出功能要求吗?
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)