gpt4 book ai didi

database - 关于 Elasticsearch 的查询

转载 作者:行者123 更新时间:2023-12-03 02:08:39 26 4
gpt4 key购买 nike

我正在编写一项将创建和管理用户记录的服务。 100+ 百万。
对于每个新用户,服务将生成一个唯一的用户 ID 并将其写入数据库。数据库根据生成的唯一用户 ID 进行分片。

每个用户记录都有几个字段。现在的要求之一是服务能够搜索是否存在具有匹配字段值的用户。所以这些字段在数据库模式中被声明为索引。

但是,由于数据库是基于主键(唯一用户 ID)分片的。我需要搜索所有分片以找到与特定列匹配的用户记录。

所以要快速查找。我正在考虑做的一件事是建立一个 ElasticSearch 集群。每次创建新的用户记录时,服务都会写入 ES 集群。 ES集群会根据相关字段索引用户记录。

我的问题是:

- 我可以从 ES 那里得到什么样的表现?假设我有 100+百万用户记录,其中每个用户记录的 5 列需要被索引。我知道这也取决于硬件配置。但请假设一个经过良好调整的硬件。

-- 在这里,我尝试使用 ES 作为提供多个键的 memcache 替代方案。所以我希望所有数据集都在内存中,并且不需要持久。 ES 是正确的工具吗?

非常感谢基于 ElasticSearch 对大型数据集的经验提出的任何评论/建议。

最佳答案

ES 并未明确设计为完全在内存中运行——您通常不希望在 Java 应用程序中处理大型无界数据集(尽管您可以使用堆外内存)。相反,它会缓存它可以缓存的内容,其余的则依赖操作系统的磁盘缓存。

即使在一台机器上,100+ 百万条记录也不应该是一个问题。我运行了一个索引,其中包含 100 个小字段(没有大文本字段)的 1500 万条记录,在单台机器上的磁盘上总计 65Gb 的数据。仅返回 id/score 的相当复杂的查询在不到 500 毫秒内执行,需要加载文档的查询在针对单个 SSD 的预热虚拟机上在 1-1.5 秒内返回。我倾向于为 JVM 提供 12-16GB 的内存 - 更多,我发现通过集群进行扩展比单个巨​​大的 vm 更好。

关于database - 关于 Elasticsearch 的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20553884/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com