1 安装elasticsearch
2 运行elasticsearch
docker run -d -p 9200:9200 -p 9300:9300 -e "ES_JAVA_OPTS=-Xms216m -Xmx216m" --name ES01 elasticsearch:2.4.0
3 测试安装结果
4 新建一个springbootweb项目 pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.21.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.elastic</groupId>
<artifactId>spring-elasticsearch</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>spring-elasticsearch</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<!--SpringBoot默认使用SpringData ElasticSearch模块进行操作-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
<dependency>
<groupId>io.searchbox</groupId>
<artifactId>jest</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
application.properties文件
spring.elasticsearch.jest.uris=http://192.168.1.139:9200
spring.data.elasticsearch.cluster-name=elasticsearch
spring.data.elasticsearch.cluster-nodes=192.168.1.139:9300
spring.data.elasticsearch.repositories.enabled=true
5 测试jest
1 新建一个实体类
public class Article {
@JestId
private Integer id;
private String author;
private String title;
private String content;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
}
public class SpringElasticsearchApplicationTests {
@Autowire JestClient jestClient;
[@Test](https://my.oschina.net/azibug)
public void contextLoads() throws IOException {
Article article = new Article();
article.setId(1);
article.setTitle("jest ElasticSearch");
article.setAuthor("mao");
article.setContent("hello this is jestElasticSearch test");
//构建一个索引功能
Index index = new Index.Builder(article).index("mao").type("news").build();
jestClient.execute(index);
}
[@Test](https://my.oschina.net/azibug)
public void search() throws IOException {
String index ="{\n" +
" \"query\" : {\n" +
" \"match\" : {\n" +
" \"content\" : \"hello\"\n" +
" }\n" +
" }\n" +
"}";
//构建搜索功能
Search search = new Search.Builder(index).addIndex("mao").addType("news").build();
SearchResult result=jestClient.execute(search);
System.out.println(result.getJsonString());
}
}
2 测试 使用 ElasticsearchRepository
新建一个Book实体
//指明索引和类型
@Document(indexName = "mao",type = "book")
public class Book {
private Integer id;
private String name;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Book{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
}
BookReposity。java
public interface BookReposity extends ElasticsearchRepository<Book,Integer> {
public List<Book> findByNameLike(String name) ;
}
@Autowired BookReposity bookReposity; @Test
@Test
public void test2(){
Book book = new Book();
book.setId(1);
book.setName("少年的奇特");
bookReposity.index(book);
}
public void test1(){
// Book book = new Book(); // book.setId(1); // book.setName("少年的奇特"); // bookReposity.index(book); for(Book book:bookReposity.findByNameLike("少")){ System.out.println(book.toString()); } }
测试结果