【问题标题】:How to build parent child relationship search in Elastic-search using Liferay API's?如何使用 Liferay API 在 Elastic-search 中构建父子关系搜索?
【发布时间】:2017-07-26 13:56:22
【问题描述】:

我们在 Liferay 中有一个名为“Publication”的自定义实体。它在 Elastic-search 中被索引并包含一个名为“journalArticleId”的字段。

根据我们的搜索要求,如果某些用户在期刊文章中搜索任何关键字,我们必须返回包含相应期刊的“journalArticleId”的出版文档。

我找到了使用 Java API 实现此问题的解决方案,但我正在寻找 Liferay API 来解决此问题。

Elastic Search Parent-Child Data Search Java API

提前感谢您的任何回复。

【问题讨论】:

  • Liferay 6、7 还是 DXP?请根据您的问题进行标记,而不是允许标记的数量
  • 对不起@OlafKock。我编辑了它。

标签: elasticsearch liferay liferay-dxp


【解决方案1】:

对于现有索引器的扩展,您应该尝试实现索引器后处理器钩子...而不是使用 ext 插件实际覆盖它们

6.2 的链接 https://dev.liferay.com/de/develop/tutorials/-/knowledge_base/6-2/extending-the-indexer-post-processor-using-a-hook

7 又名 dxp 的链接 https://dev.liferay.com/de/develop/reference/-/knowledge_base/7-0/indexer-post-processor

【讨论】:

  • 感谢您的回复。不幸的是,这不是我想要知道的。如果您需要更多关于我们的情况的说明,请询问有关此的任何其他问题。
【解决方案2】:

您应该能够找到覆盖索引器的文档。听起来您可以扩展现有的 Journal Indexer:只需将附加的 Publication 数据添加到现有 Journal 文章的全文索引中,就会自动找到它。

编辑(在您的评论之后):不查找它,我假设 Liferay 对 API 的封装并不能真正满足父子关系(但是:我可能是错的,它可能是正确的或容易的)。但是,Liferay 还允许您将 Elasticsearch 与 SOLR(可能还有其他)交换,因此它的 API 自然不会使用底层搜索引擎的所有功能。但是,您应该始终能够自己进行额外调用 - 可能不在索引器中,而是在更靠近 ES 适配器的地方。

解决方案可能是:在 Indexer 中准备内容,稍后在 Elasticsearch 适配器中将其分为父项和子项。

【讨论】:

  • 感谢您的回复。
  • 我们已经覆盖了索引器类并且能够将发布文档索引到弹性搜索中。我们对在 EL 中使用关系映射和文档结构有严格的业务要求。所以我不能将出版数据添加到现有期刊的全文索引中。如果用户在出版物中搜索关键字,我们必须使用父子映射来查看相应出版物的 JournalArticle。
【解决方案3】:

弹性搜索提供了父子映射的功能,可以使用Java API来实现上述情况的解决方案。 Elastic Search Parent-Child Data Search Java API

我们已联系 Liferay 支持团队,他们回复说 Liferay-elasticsearch 适配器尚不支持此功能。 版本:liferay-dxp-digital-enterprise-7.0-sp3

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-20
    • 2020-05-08
    • 2014-07-06
    • 1970-01-01
    • 2021-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多