ES的介绍和基础搭建

Elasticsearch简单介绍

Elasticsearch (ES)是一个基于Lucene构建的开源、分布式、RESTful 接口全文搜索引擎。Elasticsearch 还是一个分布式文档数据库,其中每个字段均是被索引的数据且可被搜索,它能够扩展至数以百计的服务器存储以及处理PB级的数据。它可以在很短的时间内在储、搜索和分析大量的数据。它通常作为具有复杂搜索场景情况下的核心发动机。
Elasticsearch就是为高可用和可扩展而生的。可以通过购置性能更强的服务器来完成。

优势

横向可扩展性:
只需要增加台服务器,做一点儿配置,启动一下Elasticsearch就可以并入集群。
分片机制提供更好的分布性:
同一个索引分成多个分片(sharding), 这点类似于HDFS的块机制;分而治之的方式可提升处理效率。

高可用:
提供复制( replica) 机制,一个分片可以设置多个复制,使得某台服务器在宕机的情况下,集群仍旧可以照常运行,并会把服务器宕机丢失的数据信息复制恢复到其他可用节点上。
口使用简单:共需一条命令就可以下载文件,然后很快就能搭建一一个站内搜索引擎。

应用场景

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

{
    "name" :     "xiaoge",
    "sex" :      0,
    "age" :      25
}

关系数据库 ⇒ 数据库 ⇒ 表 ⇒ 行 ⇒ 列(Columns)
Elasticsearch ⇒ 索引(Index) ⇒ 类型(type) ⇒ 文档(Docments) ⇒ 字段(Fields)

Linux环境安装Elasticsearch

1.linux环境下安装jdk,配置。这个不细说了网上可以搜索很多

2.下载下载elasticsearch安装包(官方文档官方文档https://www.elastic.co/downloads/elasticsearch)
3.上传es安装包,并解压

4.修改 elasticsearch.yml配置文件
network.host: 192.168.212.151 为虚拟机IP
http.port: 9200

5.注意点,因为es安全机制问题,不能使用root用户去直接启动
需要创建别的账户,并且授权:

第一步:liunx创建新用户  adduser XXX    然后给创建的用户加密码 passwd XXX    输入两次密码。
第二步:切换刚才创建的用户 su XXX  然后执行elasticsearch  会显示Permission denied 权限不足。
第三步:给新建的XXX赋权限,chmod 777 *  这个不行,因为这个用户本身就没有权限,肯定自己不能给自己付权限。所以要用root用户登录付权限。
第四步:root给XXX赋权限,chown -R XXX /你的elasticsearch安装目录。
然后执行成功。、

创建一个分组
 groupadd sancaijia
useradd esxiaoge -g sancaijia -p 123456
chown -R esxiaoge:sancaijia  elasticsearch-6.4.3
su xiaoge 切换用户 

6.访问es:

http://192.168.212.151:9200

关闭防火墙 systemctl stop firewalld.service

SpringBoot整合Elasticsearch

在这里插入图片描述这就是启动成功的效果

区别点:
9300与9200区别
9300端口: ES节点之间通讯使用
9200端口: ES节点 和 外部 通讯使用

为了可以可视化操作es我们需要安装一个es可视化工具 Kibana

linux下安装kibana

下载kibana包并且上传和ES方法一样
修改kibana.yml文件配置结合虚拟机的Ip
server.port: 5601
server.host: “192.168.212.151”
elasticsearch.url: “http:// 192.168.212.151:9200”

启动Kibana

./bin/kibana

Kibana实现增删改查

###创建索引

PUT /sancaijia


####查询索引
GET /sancaijia

####添加文档 /索引名称/类型/id
PUT /sancaijia/user/1
{
  "name":"xiaoge",
  "sex":0,
  "age":22
}


###查询文档
GET /sancaijia/user/1

###删除索引
DELETE /sancaijia

http://192.168.212.179:5601/app/kibana

<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>

application.yml

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

实体类层

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

Dao类层

public interface UserReposiory extends CrudRepository<UserEntity, String> {

}


控制器层

@RestController
public class EsController {

	@Autowired
	private UserReposiory userReposiory;

	@RequestMapping("/addUser")
	public UserEntity addUser(@RequestBody UserEntity user) {
		return userReposiory.save(user);
	}

	@RequestMapping("/findUser")
	public Optional<UserEntity> findUser(String id) {
		return userReposiory.findById(id);
	}

}

启动器

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

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

下一期我会整合java8的新特性,为大家呈现未来编码的趋势,WebFlux。结合lamada表达式完成代码的缩减,希望大家多多关注给点鼓励,希望踊跃留言,需要什么的技术分享,小鸽都会去为大家整理和分享

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值