假设我们有一个包含docs的索引,其中包含以下字段:uid和hobbies。如何运行查询以查找1个用户与其他用户之间的相似性,而不必先检索该用户,然后再对其爱好进行新查询?
最佳答案
您可以使用more like this查询并要求ES检索与给定文档相似的文档(例如,使用uid=1
的用户)(而不必先检索该文档)。
因此,在下面的like
数组中,您只需提供对文档的引用,该文档需要用作“更喜欢此”查询的引用(您可以提供多个文档,也可以逐字记录爱好字符串)。 ES将检索该文档,检查hobbies
字段,然后对所有其他文档执行“更像这个爱好”查询。
POST /users/user/_search
{
"query": {
"more_like_this" : {
"fields" : ["hobbies"],
"like" : [
{
"_index" : "users",
"_type" : "user",
"_id" : "1" <---- fill in the UID of the user here
}
]
}
}
}
关于elasticsearch - 如何使用存储的文档中的属性运行查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40574152/