我在 OpenSearch 中索引了许多文档。有人告诉我可以进行“相关文档”搜索,我可以在其中找到与 ID 为 X 类似的文档,但无法找到任何示例或文档。
是否可以获取一个文档ID,然后找到N个与它相似的文档?您可以指导我使用 Java 客户端的任何示例或文档都会非常有帮助!
more_like_this
查询 来完成此操作,并且由于 OpenSearch 文档中并未对此进行真正解释,因此您可以参考 Elasticsearch 中的 more_like_this
查询。
如下所示,您可以在其中搜索
my-index
与 my-other-index
中 ID 为 1 的另一个特定文档相似的文档:
GET my-index/_search
{
"query": {
"more_like_this": {
"fields": [ "title", "description" ],
"like": [
{
"_index": "my-other-index",
"_id": "1"
}
],
"min_term_freq": 1,
"max_query_terms": 12
}
}
}
like
是一个数组,您可以在其中指定任意数量的文档以及自由文本。
关于使用 OpenSearch Java 客户端执行此操作,应该如下所示:
MoreLikeThisQuery moreLikeThisQuery = MoreLikeThisQuery.of(mlt ->
mlt.fields("title", "description")
.minTermFreq(1)
.maxQueryTerms(12)
.like(List.of(Like.of(l ->
l.document(LikeDocument.of(ld ->
ld.id("1").index("my-other-index")
))
)))
);