Spring BOOT - MangoDB - 使用索引自动完成搜索

问题描述

我有一个 API Rest 和 Spring BOOT 连接到 MangoDB 数据库。 我在“标题”字段的“技能”集合中创建了一个自动完成索引。 我正在尝试使用此索引搜索技能,聚合为: { “$搜索”:{

  'autocomplete': {
    'query': 'Java','path': 'title','fuzzy': {
      'maxEdits': 2,'prefixLength': 3
    }
  }
}

} 服务是:

     {
   MongoCollection<Document> collection = mongoClient.getDatabase("test").getCollection("skills");
    
    
    BasicDBObject autocomplete = new BasicDBObject ();
    autocomplete.append("query",wordToSearch);
    autocomplete.append("path","title");
    
    
    BasicDBObject autocom = new BasicDBObject ("autocomplete",autocomplete);
    
    BasicDBObject search = new BasicDBObject ("$search",autocom);
    logger.info("Search Aggregation " + search.toJson());
    
    List <BasicDBObject> pileline = new ArrayList<BasicDBObject>();
    pileline.add(search);
    
    
    AggregateIterable<Document> result = collection.aggregate(pileline);
    return result.first();}

我的休息控制器是:

@GetMapping("/skill/search")
public Document searchSkills(@RequestParam String wordToSearch){
    
    
    
    Document skills = skillService.searchSkills(wordToSearch);
    
    return skills;
    
}

但我遇到了一个例外: ” 命令失败,错误为 40324 (Location40324):'无法识别的管道阶段名称: 服务器 localhost:27017 上的“$search”。完整的响应是 {"ok": 0.0,"errmsg": “无法识别的管道阶段名称:‘$search’”、“代码”:40324、“代码名称”: "Location40324"}"

感谢您的帮助!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)