目录
- 一张图展示我们要学的东西
- Elasticsearch和solr区别
- ES下载安装
- ES head 插件的安装
- ES 内置的REST接口
- 利用Kibana 对es 进行crud
- 核心概念
-
- 前提
- cluster
- Shards
- Replicas
- Gateway
- JestClient 进行操作Elasticsearch6.6.x
-
- 创建索引库
- 删除索引库
- 新增文档数据
- 删除文档数据
- 查询文档数据
一张图展示我们要学的东西
Elasticsearch和solr区别
ES下载安装
前提是你要本地安装jdk1.8以上的版本
Elasticsearch 7.6.1学习(一)下载windows 版本的es,下载可视化界面,使用kibana
ES head 插件的安装
他是一个web的前段工具,需要有node环境。
打开这个app.js
将这个改为es的地址
cmd里面进入这个目录
代码语言:javascript复制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
导入依赖
代码语言:javascript复制 <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>
配置文件
代码语言:javascript复制spring.elasticsearch.jest.uris=http://127.0.0.1:9200
spring.data.elasticsearch.cluster-nodes=localhost:9300
spring.data.elasticsearch.cluster-name=my-application
写实体类
代码语言:javascript复制@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class people {
private Integer id;
private String name;
private String phone;
}
写业务层,实现crud
创建索引库
代码语言:javascript复制@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();
}
删除索引库
代码语言:javascript复制 @GetMapping("deleteIndex")
public String deleteIndex(String indexName) throws Exception{
DeleteIndex deleteIndex = new DeleteIndex.Builder(indexName).build();
JestResult result = jestClient.execute(deleteIndex);
return result.getJsonString();
}
新增文档数据
代码语言:javascript复制 @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();
}
删除文档数据
代码语言:javascript复制 @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();
}
查询文档数据
代码语言:javascript复制 @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();
}