目录
- 一张图展示我们要学的东西
- Elasticsearch和solr区别
- ES下载安装
- ES head 插件的安装
- ES 内置的REST接口
- 利用Kibana 对es 进行crud
- 核心概念
- JestClient 进行操作Elasticsearch6.6.x
一张图展示我们要学的东西
Elasticsearch和solr区别
ES下载安装
前提是你要本地安装jdk1.8以上的版本
Elasticsearch 7.6.1学习(一)下载windows 版本的es,下载可视化界面,使用kibana
ES head 插件的安装
他是一个web的前段工具,需要有node环境。
打开这个app.js
将这个改为es的地址
cmd里面进入这个目录
npm run start
以上就启动了
以上就启动这个了
ES 内置的REST接口
利用Kibana 对es 进行crud
Kibana 是一个可视化工具,需要配置这个工具要连接的es的地址
默认是localhost ,如果是要操作服务器上面的es,那么就要改这个里面的地址了
核心概念
前提
es是有集群的,比如这个集群里面有3个,那么3个es是在不同的服务器上面。一个es 里面可以创建很多的索引,就是索引库,就相当于数据库,创建的时候会定义分片的个数。分为主分片和父分片。
举个例子,集群有3个,在不同的服务器上面。你创建一个索引库,这个索引里面有2个主分片,每一个主分片有1个父分片。那么这个索引是在3个服务器上面都有的,并且每一个主分片和他对应的父分片在不同的服务器上面,也就是每一个服务器上面的es里面保存的数据都是一样的,只是分片不一样。
cluster
Shards
Replicas
Gateway
JestClient 进行操作Elasticsearch6.6.x
导入依赖
<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();
}