对弹性搜索索引有太多不利的字段?

时间:2014-02-20 14:45:59

标签: lucene elasticsearch

假设我有一千个密钥,我想存储相关的值。直观的方法似乎就像

{
   "key1":"someval",
   "key2":"someotherval",
    ...
}

对于拥有数千个密钥的elasticsearch索引,这是一个糟糕的设计模式吗?以这种方式引入的每个密钥是否会为索引下的每个文档创建开销?

2 个答案:

答案 0 :(得分:4)

如果您知道您拥有的按键数量有上限,则几千个字段不是问题。

问题是当你有一组无限的键时,例如当密钥从一个值派生时,因为你将拥有一个不断增长的映射,因此也就是集群状态。它还可能导致奇怪的搜索。

这是一个很常见的问题/问题,我在Troubleshooting Elasticsearch searches, for Beginners的文章中专门介绍了一个部分。

简而言之,成千上万的字段没有问题 - 无法控制映射。

答案 1 :(得分:0)

Elasticsearch对于文档中的1000个键值模式并不理想。如果你想实时更新它们,那么试试redis或riak。

如果文档/记录中有数千个密钥,则它们基本上会成为字段,并且值将成为文本并编制索引。

从大数据的信息检索角度来看,建议使用比大量小字段更少的大字段,以提高搜索性能。