当前位置: 首页 > 知识库问答 >
问题:

如何使用Liferay API在弹性搜索中构建父子关系搜索?

郎河
2023-03-14

我们在Liferay中有一个名为发布的自定义实体。它在弹性搜索中建立了索引,并包含一个名为“Journal alArticleId”的字段。

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

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

弹性搜索亲子数据搜索JavaAPI

提前感谢您的回复。

共有3个答案

司空朝
2023-03-14

弹性搜索提供了父子映射的功能,上述情况的解决方案可以使用JavaAPI实现。弹性搜索父子数据搜索Java API

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

谷飞星
2023-03-14

您应该能够找到重写索引器的文档。听起来您可以扩展现有的期刊索引器:只需将额外的出版物数据添加到现有期刊文章的全文索引中,就会自动找到它。

编辑(在您的评论之后):如果不查找,我假设Liferay对应用编程接口的封装并没有真正满足亲子关系(但是:我可能错了,它可能是在或容易)。然而,Liferay还允许您与SOLR(以及其他潜在的)交换弹性搜索,因此它的应用编程接口自然不会使用底层搜索引擎的所有功能。然而,您应该总是能够自己进行额外的调用——可能不是在索引器中,而是更靠近ES适配器。

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

沈博涉
2023-03-14

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

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

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

 类似资料:
  • 我试图使用弹性搜索Java API创建两个文档,一个构建另一个的子文档。

  • 我使用Spring数据弹性搜索用于搜索/缓存目的。我需要执行一个使用child(TermCache)和parent(ConceptCache)属性的查询,并返回子对象的实例(这意味着我不能使用嵌套对象)。 我有以下结构: 我需要一个关于如何处理这类任务的提示;我应该使用两个单独的查询,还是应该以某种方式获取父对象的属性,或者其他什么?

  • 我使用Elasticsearch允许用户输入要搜索的术语。例如,我要搜索以下属性'name': 如果使用以下代码搜索或,我希望返回此文档。 我尝试过做一个bool must和做多个术语,但它似乎只有在整个字符串都匹配的情况下才起作用。 所以我真正想做的是,这个词是否以任何顺序包含两个词。 有人能帮我走上正轨吗?我已经在这上面砸了一段时间了。

  • 由于已经有很多关于连字符的问题,我已经尝试了以下解决方案: 使用字符筛选器:ElasticSearch-在名称中使用连字符进行搜索。 所以我做了这个映射: 所以char筛选器似乎没有在搜索字符串上执行?我该怎么做才能让它起作用?

  • 我已经能够通过使用cURL获得建议(参见代码块)。但是我需要在我的代码中这样做,这样我就可以使用我的自定义endpointTOMCAT_ROOT/suggest?q=el。如何使用Spring数据创建查询,以在Java代码中获得相同的结果。 我的es映射: 我的POJO: 我的问题是: 我的查询结果:

  • 我有以下格式的弹性搜索文档 } } 我的要求是,当我搜索特定字符串(string.string)时,我只想获得该字符串的FileOffSet(string.FileOffSet)。我该怎么做? 谢谢