我已经使用springboot制作了一个应用程序,并在后台运行elasticsearch,一切正常,当我通过传递一些json数据来保存数据时,它会返回正确的结果(插入数据的数量),但当我尝试获取数据时,它会返回空数组符号。
不知道发生了什么事谁都能帮忙。
我已经附上了我的 Postman 要求的截图。
用于保存数据
用于获取数据
我的apiclass:-
@SpringBootApplication
@RestController
public class SpringBootElasticserachExampleApplication {
@Autowired
private HeroRepository repository;
@PostMapping("/saveHero")
public int saveCustomer(@RequestBody List<Hero> heros) {
repository.saveAll(heros);
return heros.size();
}
@GetMapping("/findAll")
public Iterable<Hero> findAllHeros() {
return repository.findAll();
}
}
型号等级:
@Document(indexName="movie",type="hero",shards=2)
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Hero {
@Id
private String id;
private String firstname;
private String lastname;
private int age;
}
存储库:
public interface HeroRepository extends ElasticsearchRepository<Hero, String>{
List<Hero> findByFirstname(String firstName);
}
2条答案
按热度按时间r6l8ljro1#
您确定您的数据已保存在数据库中吗?您是否直接查询数据库并可以看到那里的数据?像我之前写的其他代码一样,您当前的代码只返回输入项的数量。不一定是保存的项目的实际数量。
好像是你的
findAllHeros
正在呼叫repository.findAll();
(您从父仓库继承的)。但在存储库中,您创建了一个不同的方法:List<Hero> findByFirstname(String firstName);
只是打字错误吗?另外,我希望控制器
findAllHeros
返回列表而不是Iterable
b5lpy0ml2#
我认为您的代码正在向elasticsearch添加json对象,但是数据没有保存。所以您需要将返回类型为list的数据保存为list,不要只返回size。
在存储库中写入