我们正在设置Amazon Elasticsearch Service(运行Elasticsearch版本2.3)。
我们有不同类型的数据(我现在认为是同一索引中的不同文档类型)。
我们在应用中进行了通用搜索,我们需要一个内联自动完成功能,即完成建议器从所有不同的数据(文档)类型返回匹配。如何设置?
当querying suggesters必须指定索引时,这就是为什么我想将所有数据保存在同一索引中的原因。根据文档,完成建议者会考虑索引中的所有文档。
为第一个文档类型设置完成建议器非常简单,并且工作得很好。但是,据我所知,您可以在查询时指定建议字段。如果没有为我们在设置第二种文档类型的映射时得到的错误消息,这将是一件好事:
类型:illegal_argument_exception原因:“[suggest]被定义为映射[name_of_document_type]中的对象,但此名称已用于其他类型的字段”
写这个问题我看到可以在一个建议查询中指定多个建议者。也许这就是我们要解决的问题? (即从Y建议中得到X结果,我们比较得分,得到我们想要呈现给用户的1条建议。)
答案 0 :(得分:1)
Elasticsearch良好数据设计的核心原则之一(与许多数据存储一样)是优化数据存储以便于阅读。通常,这意味着拥抱重复。
考虑到这一点,我建议使用单独的自动填充索引,并使用专为建议者查询设计的映射。
每当您插入或写入其他文档时,请将其映射到自动完成类型,并在同一时间在自动填充索引中添加或更新它(或者,根据需要的最新版本,创建离线过程,例如每天更新自动完成索引。
然后,当您执行建议查询时,您可以使用自动完成索引,而不必担心处理具有不同字段的不同类型的文档。