Elasticsearch6.6.x 版本的学习(一)es 安装 和 JestClient 进行操作Elasticsearch6.6.x

2021-09-26 11:02:39 浏览数 (1)

目录

  • 一张图展示我们要学的东西
  • 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();
    }

0 人点赞