OpenSearch Java 客户端 - 找到其他类似的文档吗?

问题描述 投票:0回答:1

我在 OpenSearch 中索引了许多文档。有人告诉我可以进行“相关文档”搜索,我可以在其中找到与 ID 为 X 类似的文档,但无法找到任何示例或文档。

是否可以获取一个文档ID,然后找到N个与它相似的文档?您可以指导我使用 Java 客户端的任何示例或文档都会非常有帮助!

elasticsearch search opensearch amazon-opensearch
1个回答
0
投票

是的,您可以使用

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")
               ))
        )))
);
© www.soinside.com 2019 - 2024. All rights reserved.