SpringBoot 默认支持两种技术来和ES交互;
1、Jest(默认不生效:需要导入jest相关包)
2、SpringData ElasticSearch
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elasticsearch</artifactId> </dependency>
<dependency> <groupId>io.searchbox</groupId> <artifactId>jest</artifactId> <version>6.3.1</version> </dependency>
spring.elasticsearch.jest.uris=http://localhost:9200
public class User{ @JestId private Integer id; private String name; }
@Autowired JestClient jestClient; @Test //插入数据 public void test1() throws IOException { User user = new User(); user.setId(2); user.setName("user2"); //index,type不能有大写英文字母 Index index = new Index.Builder(user).index("jest_index").type("jest_type").build(); jestClient.execute(index); } @Test //索引数据 public void test2() throws IOException { String query = "{\n" + " \"query\" : {\n" + " \"match\" : {\n" + " \"name\" : \"user2\"\n" + " }\n" + " }\n" + "}"; Search build = new Search.Builder(query).addIndex("jest_index").addType("jest_type").build(); SearchResult execute = jestClient.execute(build); System.out.println(execute); }
一定要选择合适的ElasticSearch否则可能会出现意想不到的错误:https://github.com/spring-projects/spring-data-elasticsearch
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elasticsearch</artifactId> </dependency>
spring.data.elasticsearch.cluster-name=elasticsearch spring.data.elasticsearch.cluster-nodes=127.0.0.1:9300
@Document(indexName = "index2",type = "type2") public class User{ private Integer id; private String name; }
//User:操作的对象,Integer:主键的类型 public interface UserRepository extends ElasticsearchRepository<User,Integer> { }
@Autowired private UserRepository repository; @Test public void test(){ User user = new User(); user.setId(5); user.setName("user5"); repository.index(user); } @Test public void test2(){ //或者浏览器访问:http://localhost:9200/index2/type2/5 Optional<User> byId = repository.findById(5); System.out.println(byId.get()); }
public interface UserRepository extends ElasticsearchRepository<User,Integer> { //可以自定义实现名字的定义必须按照官方文档:https://docs.spring.io/spring-data/elasticsearch/docs/3.1.10.RELEASE/reference/html/ public User findByName(String username); }
Spring Boot----整合Elasticsearch
原文:https://www.cnblogs.com/yanxiaoge/p/11385983.html