设置可以 return 来自不同数据类型的建议的 Elasticsearch suggesters

Set up Elasticsearch suggesters that can return suggestions from different data types

我们正在设置 Amazon Elasticsearch Service(运行 Elasticsearch 2.3 版)。

我们有不同类型的数据(我目前认为是同一索引中的不同文档类型)。 =13=]

我们在一个应用程序中有一个通用搜索,我们需要一个内联自动完成功能,即 完成建议 从所有不同的数据(文档)类型。怎么设置?

querying suggesters 必须指定索引时,这就是为什么我想将所有数据保存在同一个索引中。根据文档,完成建议器会考虑索引中的所有文档。

为第一种文档类型设置完成建议器非常简单,而且效果很好。但是,据我所知,您在查询时指定了一个 建议字段 。如果没有我们在为第二种文档类型设置映射时收到的错误消息,那就太好了:

Type: illegal_argument_exception Reason: "[suggest] is defined as an object in mapping [name_of_document_type] but this name is already used for a field in other types"

写这个问题我发现可以在单个建议查询中指定多个建议者。也许这就是我们要解决的问题? (即从 Y 个建议者那里得到 X 个结果,我们比较分数以获得我们想要呈现给用户的 1 个建议。)

Elasticsearch(与许多数据存储一样)良好数据设计的核心原则之一是优化数据存储以方便阅读。通常,这意味着拥抱重复

考虑到这一点,我建议使用一个单独的自动完成索引,其中包含专门为建议查询设计的映射。

每当您插入或写入您的其他文档之一时,将其映射到您的自动完成类型并同时在您的自动完成索引中添加或更新它(或者,取决于它需要的最新程度) ,创建一个离线流程来更新您的自动完成索引,例如每天)。

然后,当您执行建议查询时,您可以只使用自动完成索引,而不必担心处理具有不同字段的不同类型的文档。