假设我有一千个密钥,我想存储相关的值。直观的方法似乎就像
{
"key1":"someval",
"key2":"someotherval",
...
}
对于拥有数千个密钥的elasticsearch索引,这是一个糟糕的设计模式吗?以这种方式引入的每个密钥是否会为索引下的每个文档创建开销?
答案 0 :(得分:4)
如果您知道您拥有的按键数量有上限,则几千个字段不是问题。
问题是当你有一组无限的键时,例如当密钥从一个值派生时,因为你将拥有一个不断增长的映射,因此也就是集群状态。它还可能导致奇怪的搜索。
这是一个很常见的问题/问题,我在Troubleshooting Elasticsearch searches, for Beginners的文章中专门介绍了一个部分。
简而言之,成千上万的字段没有问题 - 无法控制映射。
答案 1 :(得分:0)
Elasticsearch对于文档中的1000个键值模式并不理想。如果你想实时更新它们,那么试试redis或riak。
如果文档/记录中有数千个密钥,则它们基本上会成为字段,并且值将成为文本并编制索引。
从大数据的信息检索角度来看,建议使用比大量小字段更少的大字段,以提高搜索性能。