elasticsearch &引用;扇出;指数化策略
我计划使用Elasticsearch作为一种社交网络平台,用户可以发布“更新”,与其他用户成为朋友,并关注他们朋友的反馈。最基本也是最常见的查询是“获取我关注的朋友与我共享的帖子”。此查询可以通过附加约束(如标记或地理搜索)进行扩展 我了解到,社交网络通常采用发散式的写作方式,向关注者传播“更新”,从而使查询更加本地化。因此,我可以看到两种潜在的索引策略:elasticsearch &引用;扇出;指数化策略,elasticsearch,elasticsearch,我计划使用Elasticsearch作为一种社交网络平台,用户可以发布“更新”,与其他用户成为朋友,并关注他们朋友的反馈。最基本也是最常见的查询是“获取我关注的朋友与我共享的帖子”。此查询可以通过附加约束(如标记或地理搜索)进行扩展 我了解到,社交网络通常采用发散式的写作方式,向关注者传播“更新”,从而使查询更加本地化。因此,我可以看到两种潜在的索引策略: 将所有帖子存储在一个索引中,并搜索帖子(1)与请求者共享,以及(2)其作者在请求者跟随的用户列表中(“天真”方法) 为每个用户创建一个索引,
- ES如何应对大量指数?它会引起性能问题吗
- 对于我的特定用例,有没有关于更好的索引策略的想法
- 使用elasticsearch的最大优势在于,您能够执行相关性评分,通常基于一些时态特征,如浏览上下文。使用elasticsearch仅检索按时间戳排序的文档意味着您没有利用它的潜力。同时,像Redis这样的解决方案将为您提供更优越的阅读性能
- 扇出写入场景意味着每次更新都要进行大量写入(特别是,如果您的用户有很多追随者)。Elasticsearch不是数据库,也没有针对这种使用模式进行优化。然而,它为频繁阅读做好了准备
- 在写文章时分散也意味着你通过复制帖子的信息来产生大量的“额外”数据。为了将这些数据保存在RAM中,您只需要存储元数据,如单独的文档存储中的文档id和标记。同样,除了JSON之外,还有其他格式可以有效地存储和搜索此类结构化数据
在这两种情况中进行选择是一个关于您的需求的问题,如平均追随者数量、几乎所有人都遵循的“中心”数量、提要是否自然订购(例如按时间)等。我认为,决定是否使用elasticsearch需要作为此分析的结果。感谢您给出的完整答案!因此,ES节点在面临内存压力或缺少文件描述符时不会卸载/关闭LRU索引?据我所知不是这样。我认为您需要自己关闭它们(这将释放RAM和文件描述符)。