Spring BootとESの統合でソートを実装する方法
Spring BootとElasticsearchを統合してソートを実装するには、以下の手順を行うことができます。
- 最初に、`pom.xml` ファイルに Elasticsearch の依存関係を追加します。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
- Elasticsearchの接続情報を設定するためのElasticsearch設定クラスを作成する:
@Configuration
@EnableElasticsearchRepositories(basePackages = "com.example.repository")
public class ElasticsearchConfig {
@Value("${elasticsearch.host}")
private String host;
@Value("${elasticsearch.port}")
private int port;
@Bean
public RestHighLevelClient elasticsearchClient() {
return new RestHighLevelClient(
RestClient.builder(new HttpHost(host, port))
);
}
@Bean
public ElasticsearchOperations elasticsearchTemplate() {
return new ElasticsearchRestTemplate(elasticsearchClient());
}
}
- Elasticsearch のクエリメソッドを定義するために Spring Data Elasticsearch のリポジトリインターフェースを作成します。
@Repository
public interface UserRepository extends ElasticsearchRepository<User, String> {
List<User> findByLastName(String lastName, Sort sort);
}
- ソートするクエリメソッドで、Sortオブジェクトを使用して並び順を指定する。
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
public List<User> findByLastName(String lastName, String sortField, Sort.Direction sortDirection) {
Sort sort = Sort.by(sortDirection, sortField);
return userRepository.findByLastName(lastName, sort);
}
}
findByLastNameメソッドを呼び出し、ソート列とソート方向を渡すことで、結果のソートが実現します。