Hello,今天给给各位童鞋分享的是ElasticSearch,赶紧拿出小本子记下来吧
Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。 作为 Elastic Stack 的核心,它集中存储您的数据,帮助您发现意料之中以及意料之外的情况。Elasticsearch是java开发的,在7.8版本以上,需要使用jdk1.8以上版本。
Elasticsearch是面向文档型数据库,一条数据在这里就是一个文档。为了方便大家理解,我们将Elasticsearch里存储文档数据与关系型数据库mysql存储数据的概念进行类比
ES里的Index可以看做一个库,而type相当于表,Documents相当于行。
这里type的概念逐渐被弱化,Elasticsearch 6.x中,一个index下只能包含一个type,Elasticsearch 7.x中,type的概念已经被删除了。
1.安装Elasticsearch,从官网下载windwins版本的包,解压开箱即用
目录说明
bin:程序启动的bat文件
config:配置信息
data:存放数据
jdk:自带的jdk
lib:需要的jar包
logs:日志文件
modules:功能模块
plugins:扩展功能包
点击bin目录下的elasticsearch.bat文件,启动elasticsearch项目,默认系统访问端口9200
使用http://127.0.0.1:9200/访问,看到以下页面,说明启动成功
2.使用javaApi连接es
(1)新建maven项目后,pom.xml导入需要的包
(2)使用RestHighLevelClient创建客户端连接测试
public class EsClientTest {
@Test
public void testConneEs() throws IOException {
//1.创建es客户端
RestHighLevelClient restHighLevelClient = new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost",9200,"http"))
);
//2.关闭连接
restHighLevelClient.close();
}
}
3.创建索引
4.获取索引记录
控制台获取情况
5.删除索引
6.向索引中添加doc
使用postman查看当前添加的doc文档情况
7.更新doc的某个值
name字段值有张三更新为李四
8.查询doc文档
@Test
public void docSelect() throws IOException {
//1.创建es客户端连接
RestHighLevelClient restHighLevelClient = new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost",9200,"http"))
);
//2.创建查询doc数据
GetRequest getRequest = new GetRequest();
getRequest.index("user").id("1001");
//3.执行查询
GetResponse documentFields = restHighLevelClient.get(getRequest, RequestOptions.DEFAULT);
System.out.println(documentFields.getSourceAsString());
//4.关闭资源
restHighLevelClient.close();
}
控制台输出结果
9.删除doc文档
控制台执行结果
使用postman查询记录-已经删除成功
10.批量添加doc
使用postman查看user索引下的所有文档
11.批量删除doc
使用postman查看索引下的文档
12.批量更新doc
postman中查看索引下的文档
13.使用query查询索引下的所有doc
控制台打印消息
14.使用query带条件查询某个索引下的doc
15.使用query带分页查询某个索引下的doc
16.使用query带排序查询某个索引下的doc
17.使用query查询某个索引下的doc-查询某些字段
18.使用query查询某个索引下的doc-组合条件查询(and的关系)
19.使用query查询某个索引下的doc-组合条件查询(or的关系)
20.使用query查询某个索引下的doc-按范围查询
21.使用query查询某个索引下的doc-模糊查询
22.使用query查询某个索引下的doc-高亮显示某个字段
23.使用query查询某个索引下的doc-聚合查询(某个字段最大最小)
24.使用query查询某个索引下的doc-分组查询
25.集群部署elasticsearch简介
背景:单台elasticsearch提供服务,往往都有最大的负载能力,超过这个阈值,服务器性能就会大大降低甚至不可用,所以生成环境中,一般都是运行在指定服务器集群中。
集群cluster:一个集群就是由一个或者多个服务器节点组织在一起,共同持有整个数据,并一起提供索引和搜索服务。一个Elasticsearch集群有一个唯一的名字标识,整个名字默认就是elasticsearch。整个名字很重要,因为一个节点只能通过指定某个集群的名字来加入集群。
节点Node:集群中包含很多的服务器,一个节点就是其中的一个服务器。作为集群的一部分,它存储数据,参与集群的索引和搜索功能。一个节点也是由一个表示来决定的,一个节点可以通过配置集群名称的方式来加入一个指定的集群
26.windows环境下elasticsearch集群部署
(1)创建一个elasticsearch-cluster的文件件,把elasticsearch服务文件拷贝三份进去,删除data和logs目录下的文件,分别命名为node-1001、node-1002、node-1003,作为三个节点服务
(2)修改集群文件目录中每个节点的config/elasticsearch.yml文件
node-1001节点配置
#集群名称,节点之间要保持一致
cluster.name: my-application
#节点名称,集群内要保持唯一
node.name: node-1001
#可以作为master节点
node.master: true
#存储数据
node.data: true
#ip地址
network.host: localhost
#http端口
http.port: 1001
#tcp监听端口,节点之间内部通信使用
transport.tcp.port: 9301
#节点之间相互通信的主机地址
#discovery.seed_hosts: ["host1", "host2"]
#discovery.zen.fd.ping_timeout:1m
#discovery.zen.fd.ping_retries:5
#跨域配置
http.cors.enabled: true
http.cors.allow-origin: "*"
此时从bin/elasticsearch.bat启动node-1001,控制服务台打印出节点名称、集群名称
使用postman查看节点的启动状态(启动)和节点数(1个)
node-1002节点配置
#集群名称,节点之间要保持一致
cluster.name: my-application
#节点名称,集群内要保持唯一
node.name: node-1002
#可以作为master节点
node.master: true
#存储数据
node.data: true
#ip地址
network.host: localhost
#http端口
http.port: 1002
#tcp监听端口,节点之间内部通信使用
transport.tcp.port: 9302
#节点之间相互通信的主机地址-查找主节点
discovery.seed_hosts: ["localhost:9301"]
#执行查找ping命令的超时时间
discovery.zen.fd.ping_timeout: 1m
discovery.zen.fd.ping_retries: 5
#跨域配置
http.cors.enabled: true
http.cors.allow-origin: "*"
此时从bin/elasticsearch.bat启动node-1002,控制服务台打印出节点名称、集群名称
使用postman查看节点的启动状态(启动)和节点数(2个)
node-1003节点配置
#集群名称,节点之间要保持一致
cluster.name: my-application
#节点名称,集群内要保持唯一
node.name: node-1003
#可以作为master节点
node.master: true
#存储数据
node.data: true
#ip地址
network.host: localhost
#http端口
http.port: 1003
#tcp监听端口,节点之间内部通信使用
transport.tcp.port: 9303
#节点之间相互通信的主机地址-查找主节点
discovery.seed_hosts: ["localhost:9301","localhost:9302"]
#执行查找ping命令的超时时间
discovery.zen.fd.ping_timeout: 1m
discovery.zen.fd.ping_retries: 5
#跨域配置
http.cors.enabled: true
http.cors.allow-origin: "*"
此时从bin/elasticsearch.bat启动node-1003,控制服务台打印出节点名称、集群名称
使用postman查看节点的启动状态(启动)和节点数(3个)
好啦,今天的文章就到这里,希望能帮助到屏幕前迷茫的你们