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

liwlm1x9  于 5个月前  发布在  ElasticSearch
关注(0)|答案(1)|浏览(63)

我在OpenSearch中索引了许多文档。有人告诉我可以进行“相关文档”搜索,在那里我可以找到与ID为 X 的文档类似的文档,但无法找到任何示例或文档。
有没有可能获取一个文档ID,然后找到 N 个与之相似的文档?任何例子或文档,你可以告诉我使用Java客户端将是非常有帮助的!

jdzmm42g

jdzmm42g1#

是的,你可以用more_like_this query来做,因为它在OpenSearch文档中没有真正解释,你可以参考more_like_this query上的Elasticsearch。
如下所示,您可以在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")
               ))
        )))
);

相关问题