安装kibana可视化插件(SpringBoot整合Elasticsearch)

1. 什么是kibana

Kibana是一个开源的分析和可视化平台,设计用于和Elasticsearch一起工作。 你用Kibana来搜索,查看,并和存储在Elasticsearch索引中的数据进行交互。 你可以轻松地执行高级数据分析,并且以各种图标、表格和地图的形式可视化数据。 Kibana使得理解大量数据变得很容易。它简单的、基于浏览器的界面使你能够快速创建和共享动态仪表板,实时显示Elasticsearch查询的变化。

2. 安装kibana可视化插件

    解压上篇博客上传的kibana-6.4.3-linux-x86_64.tar.gz

    修改kibana配置文件

# 将默认配置改成如下:
server.port: 5601  //kibana默认端口号
server.host: "192.168.0.105"  //服务器IP地址
elasticsearch.url: "http://192.168.0.105:9200"  //es的url

    进入kibana的bin目录下,执行./kibana启动kibana

    浏览器访问:http://192.168.0.105:5601,出现以下页面即表明kibanba安装成功

3. kibana增删改查文档

 Elasticsearch存储结构 :

Elasticsearch是文件存储,Elasticsearch是面向文档型数据库,一条数据在这里就是一个文档,用JSON作为文档序列化的格式,比如下面这条用户数据:

{
    "name" :     "zhangsan",
    "sex" :      0,
    "age" :      20
}

关系数据库       ⇒ 数据库  ⇒ 表 (用户表)  ⇒ 行  ⇒ 列(Columns)

Elasticsearch    ⇒ 索引(Index)  ⇒ 类型(type)  ⇒ 文档(Docments)  ⇒ 字段(Fields)  

① 创建索引

② 查询索引

③ 创建文档(注意id不可重复,相当于mysql的主键id)

④ 查询文档

⑤ 更改文档(方式和新增一个样,注意执行后version和result的变化)

⑥ 删除文档

⑦ 删除索引

4. 高级查询(了解一下就行,一般我们springboot整合即可

① 查询所有数据

② 根据多个id查询

③ 查询年龄为22岁

④ 查询年龄20-30之间

⑤ 查询年龄20-30之间,且降序排列

⑥ 查询年龄20-30之间,且降序排列,分页

⑦ 查询年龄20-30之间,且降序排列,分页,只展示name和age字段

5. Dsl语言查询与过滤

① 根据姓名精确查询

  term是代表完全匹配,即不进行分词器分析,文档中必须包含整个搜索的词汇

GET myes/user/_search
{
  "query": {
    "term": {
      "name": "zhangsan"
    }
  }
}

② match根据名称模糊查询,相当于like

GET myes/user/_search
{
  "query": {
    "match": {
        "name": "迪"
      }
  }
}

③ match根据名称模糊查询,相当于like,limit0,1

GET myes/user/_search
{
  "from": 0,
  "size": 2, 
  "query": {
    "match": {
        "name": "迪"
      }
  }
}

④ 使用filter过滤年龄,_source代表只展示的字段

6. Elasticsearch版本控制

① 为什么要进行版本控制CAS无锁(乐观锁)? 

为了保证数据再多线程操作下的准确性

② 悲观锁和乐观锁

悲观锁:假设会发生并发冲突,屏蔽一切可能违反数据准确性的操作(最坏的打算,就认为一定会发生并发冲突)

乐观锁:假设不会发生并发冲突,只在提交操作是检查是否违反数据完整性

③ 内部版本控制和外部版本控制

内部版本控制:_version自增长,修改数据后,_version会自动的加1(一般用内部版本控制)

外部版本控制:为了保持_version与外部版本控制的数值一致,使用version_type=external检查数据当前的version值是否小于请求中的version值

7. SpringBoot整合Elasticsearch

① 首先在pom.xml文件引入以下依赖

<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>
	<groupId>com.yuyi</groupId>
	<artifactId>springboot-es</artifactId>
	<version>0.0.1-SNAPSHOT</version>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.0.0.RELEASE</version>
		<relativePath /> <!-- lookup parent from repository -->
	</parent>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
		</dependency>
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
		</dependency>
	</dependencies>
</project>

② 配置application.yml

spring:
  data:
    elasticsearch:
    ####集群名称
      cluster-name: myes
    ####地址 
      cluster-nodes: 192.168.0.105:9300

其中cluster-name为服务器/usr/local/elasticsearch-6.4.3/config/elasticsearch.yml的配置,默认为elasticsearch,可更改,这里我改成了myes,如下图所示:

③ SpringBoot启动类加上以下注解,其中basePackages为扫描的dao层

package com.yuyi;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.data.elasticsearch.repository.config.EnableElasticsearchRepositories;

@SpringBootApplication
@EnableElasticsearchRepositories(basePackages = "com.yuyi.repository")
public class AppEs {

	public static void main(String[] args) {
		SpringApplication.run(AppEs.class, args);
	}
}

④ 编写一个实体类,UserEntity,属性与上面建的myes/user一一对应

indexName:上面配的索引(即mysql中的数据库)

type:类型(即mysql中的表)

package com.yuyi.entity;

import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;

import lombok.Data;

@Document(indexName = "myes", type = "user")
@Data
public class UserEntity {
	@Id
	private String id;
	private String name;
	private Integer sex;
	private Integer age;
}

⑤ DAO层

package com.yuyi.repository;

import org.springframework.data.repository.CrudRepository;

import com.yuyi.entity.UserEntity;

public interface UserReposiory extends CrudRepository<UserEntity, String> {//String指主键id的类型

}

⑥ Controller层,简单编写两个接口进行测试

package com.yuyi.controller;

import java.util.Optional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.yuyi.entity.UserEntity;
import com.yuyi.repository.UserReposiory;

@RestController
public class EsController {

	@Autowired
	private UserReposiory userReposiory;

	/**
	 * 添加文档
	 * @param user
	 * @return
	 */
	@RequestMapping("/addUser")
	public UserEntity addUser(@RequestBody UserEntity user) {
		return userReposiory.save(user);
	}
	/**
	 * 查询文档
	 * @param id
	 * @return
	 */
	@RequestMapping("/findUser")
	public Optional<UserEntity> findUser(String id) {
		return userReposiory.findById(id);
	}

}

⑦ 打开postman进行测试:

可以发现在kibana可视化界面,获取到id为2的值:

测试查询接口:

至此,kibana可视化界面安装,以及SpringBoot整合Elasticsearch正式完成!!

猜你喜欢

转载自blog.csdn.net/AkiraNicky/article/details/85253052