package demo;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.data.elasticsearch.core.ElasticsearchTemplate;
import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;
import org.springframework.data.elasticsearch.core.query.SearchQuery;
import static org.elasticsearch.index.query.QueryBuilders.fuzzyQuery;
@SpringBootApplication
public class DataElasticsearchApplication {
@Bean
public InitializingBean seedDatabase(CarRepository repository) {
return () -> {
repository.deleteAll();
repository.save(new Car("Honda", "Civic", 1997));
repository.save(new Car("Honda", "Accord", 2003));
repository.save(new Car("Ford", "Escort", 1985));
};
}
@Bean
public CommandLineRunner example(CarRepository repository,
ElasticsearchTemplate template) {
return (args) -> {
System.err.println("From the repository...");
repository.findByMakeIgnoringCase("fOrD").forEach(System.err::println);
System.err.println("\nFrom the template...");
SearchQuery query = new NativeSearchQueryBuilder()
.withQuery(fuzzyQuery("make", "Ronda")).build();
template.queryForList(query, Car.class).forEach(System.err::println);
};
}
public static void main(String[] args) {
SpringApplication.run(DataElasticsearchApplication.class, args);
System.exit(0);
}
}