Spring BootとESの統合でソートを実装する方法

Spring BootとElasticsearchを統合してソートを実装するには、以下の手順を行うことができます。

  1. 最初に、`pom.xml` ファイルに Elasticsearch の依存関係を追加します。
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
  1. 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());
    }
}
  1. Elasticsearch のクエリメソッドを定義するために Spring Data Elasticsearch のリポジトリインターフェースを作成します。
@Repository
public interface UserRepository extends ElasticsearchRepository<User, String> {

    List<User> findByLastName(String lastName, Sort sort);

}
  1. ソートするクエリメソッドで、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メソッドを呼び出し、ソート列とソート方向を渡すことで、結果のソートが実現します。

bannerAds