我正在编写一个将创建和管理用户记录的服务。其中有1亿多人。 对于每个新用户,服务将生成一个唯一的用户标识并将其写入数据库。数据库根据生成的唯一用户标识分片。关于Elasticsearch的查询信息
每个用户记录都有几个字段。现在其中一个要求是服务能够搜索是否存在具有匹配字段值的用户。所以这些字段在数据库模式中被声明为索引。
但是由于数据库是基于主键(唯一用户标识)分片的。我将需要搜索所有分片以查找与特定列匹配的用户记录。
所以要快速查找。我想要做的一件事是建立一个ElasticSearch集群。每次创建新用户记录时,服务将写入ES群集。 ES集群将根据相关字段对用户记录进行索引。
我的问题是:
- 我可以从这里ES期待什么样的表现?假设我有100多万条用户记录,每个用户记录的5列需要编入索引。我知道它也取决于硬件配置。但请假设一个调整好的硬件。
- 这里我试图使用ES作为提供多个密钥的memcache替代方案。所以我希望所有的数据集都在内存中,而且不需要持久耐用。 ES是正确的工具吗?
基于大数据集的ElasticSearch经验的任何意见/建议非常感谢。
我认为你可以使用ES来做到这一点。 100M记录是ES中的正常数字。我的数据大约有80M记录,索引8列,并且工作正常。在ES中,所有内容都被编入索引,并将加载到内存中以加快搜索速度。我建议您阅读elasticsearch.org中的文档/演示文稿,并加入社区以研究如何实施 –
Hello Duc,您的所有数据都驻留在内存中吗?你会得到什么样的阅读表现?另外你使用ES的原因是什么? – snegi
这取决于你的查询,你的目的。我让它在内存中缓存,因为我专注于性能,我主要用它来搜索数据 –