私はElastic Searchを使用してJavaアプリケーションを作成しています。 ここに私のプロジェクトのリンクがあります。 https://github.com/chanakaDe/ensembl-elastic-restElasticsearchRepositoryを使用してJava経由で弾性検索を検索するには?
このプロジェクトでは、データをJSONとして取得するための残りのコントローラを実装しました。 これはコントローラクラスです。今は2つの方法しかありません。しかし、私はこのようないくつかの方法を追加する必要があります。
@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()のようなデフォルトメソッドがありますか? オブジェクトを渡して値を取得するだけですか?
私に答える人は誰もいません:( –