【问题标题】:Set up Elasticsearch suggesters that can return suggestions from different data types设置可以返回来自不同数据类型的建议的 Elasticsearch 建议器
【发布时间】:2016-10-12 11:24:37
【问题描述】:

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

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

我们在需要内联自动完成功能的应用中进行通用搜索,即完成建议返回来自所有不同数据(文档)类型的命中。如何设置?

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

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

类型:非法参数异常原因:“[suggest] 被定义为映射 [name_of_document_type] 中的对象,但此名称已用于其他类型的字段”

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

【问题讨论】:

  • 我们所做的(我在一个维护搜索 API 的团队中工作)将所有数据再次索引到具有单一类型的自动完成特定索引中,因此所有内容都具有相同的结构。我认为这也是 Elastic 会告诉你做的事情。存储您的数据,以便于查询。

标签: elasticsearch elasticsearch-2.0 amazon-elasticsearch


【解决方案1】:

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

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

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

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

【讨论】:

  • 你是对的。这样做是有道理的。谢谢你。 :)
猜你喜欢
  • 2018-04-10
  • 2016-09-28
  • 2011-09-18
  • 1970-01-01
  • 2016-04-30
  • 2022-08-20
  • 2011-04-08
  • 2020-07-14
  • 2016-04-21
相关资源
最近更新 更多