前提是你要本地安装jdk1.8以上的版本
Elasticsearch 7.6.1学习(一)下载windows 版本的es,下载可视化界面,使用kibana
他是一个web的前段工具,需要有node环境。
打开这个app.js
将这个改为es的地址
cmd里面进入这个目录
npm run start
以上就启动了
以上就启动这个了
Kibana 是一个可视化工具,需要配置这个工具要连接的es的地址
默认是localhost ,如果是要操作服务器上面的es,那么就要改这个里面的地址了
es是有集群的,比如这个集群里面有3个,那么3个es是在不同的服务器上面。一个es 里面可以创建很多的索引,就是索引库,就相当于数据库,创建的时候会定义分片的个数。分为主分片和父分片。
举个例子,集群有3个,在不同的服务器上面。你创建一个索引库,这个索引里面有2个主分片,每一个主分片有1个父分片。那么这个索引是在3个服务器上面都有的,并且每一个主分片和他对应的父分片在不同的服务器上面,也就是每一个服务器上面的es里面保存的数据都是一样的,只是分片不一样。
导入依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.7.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<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://127.0.0.1:9200
spring.data.elasticsearch.cluster-nodes=localhost:9300
spring.data.elasticsearch.cluster-name=my-application
写实体类
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class people {
private Integer id;
private String name;
private String phone;
}
写业务层,实现crud
@RestController
public class IndexController {
导入依赖,就可以直接使用
@Autowired
private JestClient jestClient;
@GetMapping("createIndex")
public String createIndex(String indexName) throws Exception{
CreateIndex createIndex = new CreateIndex.Builder(indexName).build();
System.out.println(createIndex);
JestResult result = jestClient.execute(createIndex);
return result.getJsonString();
}
@GetMapping("deleteIndex")
public String deleteIndex(String indexName) throws Exception{
DeleteIndex deleteIndex = new DeleteIndex.Builder(indexName).build();
JestResult result = jestClient.execute(deleteIndex);
return result.getJsonString();
}
@GetMapping("creatDoc")
public String creatDoc() throws Exception{
people people = new people();
people.setPhone("ddd");
people.setName("iii");
people.setId(55);
Index.Builder builder = new Index.Builder(people);
Index index = builder.index("people").type("peopledoc").build();
JestResult result = jestClient.execute(index);
return result.getJsonString();
}
@GetMapping("deleteDoc")
public String deleteDoc(String id) throws Exception{
Delete index = new Delete.Builder(id).index("people").type("peopledoc").build();
JestResult result = jestClient.execute(index);
return result.getJsonString();
}
@GetMapping("search")
public String search(String Keyword) throws Exception{
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(new MultiMatchQueryBuilder(Keyword, "name","phone"));
System.out.println(searchSourceBuilder.toString());
SearchResult result = jestClient.execute(new Search.Builder(searchSourceBuilder.toString())
.addIndex("people")
.addType("peopledoc")
.build());
List<SearchResult.Hit<people, Void>> hits = result.getHits(people.class);
for(SearchResult.Hit<people, Void> hit: hits){
people source = hit.source;
System.out.println(source.getId());
System.out.println(source.getPhone());
System.out.println(source.getName());
System.out.println("==============");
}
return result.getJsonString();
}