允许用户在ElasticSearch索引中定义任意键

时间:2018-03-23 03:00:23

标签: elasticsearch searchkick

我的团队正在项目中使用SearchKick(Rails)与ElasticSearch进行交互。

索引(联系人)包含~10个通用,可搜索的字段,如姓名,电子邮件,生日,年龄等。

此外,我们需要允许程序的用户在一组预定义类型(String,Integer,Boolean等)中创建自己的自定义字段。

计划是为每个用户创建一个唯一索引(实际上可以扩展到低4位数)或使用单个联系人索引并更新映射以每次添加新的自定义字段。我假设整个程序中自定义字段的实际上限为5k。

独特的索引方法似乎肯定会在某些时候遇到扩展问题。这样的情况是这样的吗?

如果每个文档只包含10 - 20个字段,那么将很多字段添加到索引映射是否会产生巨大的性能成本?

这里有其他标准方法吗?

1 个答案:

答案 0 :(得分:1)

Here你可以找到一些关于你为什么不能拥有太多指数的细节。

Here您可以找到为什么字段限制为1000

每个用户拥有一个索引将是一个矫枉过正的恕我直言。注意基本上相同的字段,但名称略有不同。在前端使用一些自动完成功能,以指导用户重用字段,而不是添加基本上做同样事情的新字段。这将允许您将来使用Reindex API,以便在您达到某个点时进行一些策划并创建新索引(并删除旧索引)。基本上是某种手动db真空吸尘器。

P.S。有一些索引的用例有多达7000个字段或更多,它们似乎工作正常。您可以随时尝试使用一个索引和多个字段的MVP,并尝试通过手动策划在达到里程碑时对这些字段进行分组。