【发布时间】:2017-07-19 17:52:14
【问题描述】:
我正在使用 Elastic Search 创建一个 Java 应用程序。 这是我的项目的链接。 https://github.com/chanakaDe/ensembl-elastic-rest
在这个项目中,我实现了一个休息控制器来将数据作为 JSON。 这是控制器类。现在它只有两种方法。但是我需要添加一些这样的方法。
@RequestMapping(value = "/find-by/{id}/{param1}/{param2}/{param3}", method = RequestMethod.GET)
public Iterable<Track> findAllWithParams(@PathVariable int id, @PathVariable String param1, @PathVariable String param2, @PathVariable String param3) {
return trackService.someMethodWithParams(id, param1, param2, param3);
}
我需要做的是从用户那里获取一些值并将它们发送到 Elastic 服务器并进行搜索。我只是参考了其中一些链接并得到了一些想法。 https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/java-search.html https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-terms-query.html
TrackService.java 和 TrackServiceImpl.java 由 TrackRepository.java 实现,并由 ElasticsearchRepository 默认类扩展。 https://github.com/chanakaDe/ensembl-elastic-rest/blob/master/src/main/java/com/chanaka/book/repository/TrackRepository.java
我需要通过 REST URL 获取值并创建如下对象并将其传递给 Elastic Server。如何使用我当前的项目配置来实现它?
{
"query": {
"constant_score" : {
"filter" : {
"terms" : { "user" : ["kimchy", "elasticsearch"]}
}
}
}
}
这是我的 TrackService.java 接口。
public interface TrackService {
Track save(Track track);
Track findOne(int id);
Iterable<Track> findAll();
}
这也是我由 TrackService.java 实现的 TrackServiceImpl.java 类。
public class TrackServiceImpl implements TrackService {
private TrackRepository trackRepository;
@Autowired
public void setTrackRepository(TrackRepository trackRepository) {this.trackRepository = trackRepository;}
@Override
public Track save(Track track) {
return trackRepository.save(track);
}
@Override
public Track findOne(int id) {
return trackRepository.findOne(id + "");
}
@Override
public Iterable<Track> findAll() {
return trackRepository.findAll();
}
}
我需要为此实现自定义方法吗?或者有没有像 findAll() 和 findOne() 这样的默认方法? 只需传递一个对象并获取值?
【问题讨论】:
-
没有人回答我的人:(
标签: java spring rest elasticsearch