(七):ElasticSearch客户端操作
ElasticSearch服务的客户端,有以下三种方式:
·elasticsearch-head插件
·elasticsearch提供的Restful接口直接访问
·elasticsearch提供的API进行访问
1、elasticsearch-head插件
启动插件后,访问 http://localhost:9100/ 地址,详情如下:
1.1、概览信息
概览信息可以查询到建立的索引。
1.2、索引
点击索引页,可以新建索引,同时可以查看建立的索引信息,包括该索引下的文档数。
![0](https://img2024.cnblogs.com/blog/1680081/202401/1680081-20240118161542679-1257282336.png)
1.3、浏览数据
浏览数据页,可以根据索引及类型查看数据,详情如下:
![0](https://img2024.cnblogs.com/blog/1680081/202401/1680081-20240118161543515-1429952463.png)
1.4、基本查询和复合查询
基本查询和复合查询在学习完 domain-specific language 领域特定语言,即DSL中会做详细介绍。
2、访问Restful接口
2.1、索引操作
2.1.1、创建索引 index
PUT /索引名
POST /索引名
1.1、创建映射及索引
请求体内容:
{
"mappings": {
"properties": {
"id": {
"type": "long",
"store": true
},
"title": {
"type": "text",
"store": true,
"analyzer":"standard"
},
"content": {
"type": "text",
"store": true,
"analyzer":"standard"
}
}
}
}
详情如下:
![0](https://img2024.cnblogs.com/blog/1680081/202401/1680081-20240118161543323-1020937951.png)
通过head插件查询,索引已经建成功。
![0](https://img2024.cnblogs.com/blog/1680081/202401/1680081-20240118161544338-365918421.png)
1.2、先创建索引再创建映射 mapping
使用put方法创建一个索引,无任何请求信息,详情如下:
![0](https://img2024.cnblogs.com/blog/1680081/202401/1680081-20240118161541896-648233257.png)
设置mapping信息,详情如下:
{
"article": {
"properties": {
"id":{
"type":"long",
"store":true
},
"title":{
"type":"text",
"store":true,
"analyzer":"standard"
},
"content":{
"type":"text",
"store":true,
"analyzer":"standard"
}
}
}
}
postman请求详情如下:
![0](https://img2024.cnblogs.com/blog/1680081/202401/1680081-20240118161543094-256429949.png)
head插件查看如下:
![0](https://img2024.cnblogs.com/blog/1680081/202401/1680081-20240118161543497-1142483963.png)
2.1.2、查看索引
# 查看所有索引信息
GET /*
详情如下:
![0](https://img2024.cnblogs.com/blog/1680081/202401/1680081-20240118161846761-1425966695.png)
# 查看指定索引的索引信息
GET /索引名
详情如下:
![0](https://img2024.cnblogs.com/blog/1680081/202401/1680081-20240118161847022-913803744.png)
2.1.3、更新索引
DELETE /索引名称
详情如下:
![0](https://img2024.cnblogs.com/blog/1680081/202401/1680081-20240118161846887-968121936.png)
2.2、文档操作
2.2.1、post与put方式的区别
提交方式 |
描述 |
PUT |
提交的id如果不存在就是新增操作,如果存在就是更新操作,id不能为空 |
POST |
如果不提供id会自动生成一个id,如果id存在就更新,如果id不存在就新增 |
2.2.2、创建文档
PUT|POST /索引名称/类型名/编号
请求体内容:
{
"id":1,
"title":"ElasticSearch 是一个基于 Lucene 的搜索服务器",
"content":"它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。"
}
详情如下:
![0](https://img2024.cnblogs.com/blog/1680081/202401/1680081-20240118162746695-1110871270.png)
使用head查看结果:
![0](https://img2024.cnblogs.com/blog/1680081/202401/1680081-20240118162746801-878783655.png)
返回字段含义:
字段 |
含义 |
_index |
索引名称 |
_type |
类型名称 |
_id |
记录id |
_version |
版本号 |
_seq_no |
并发控制字段,每次更新都会+1,用来实现乐观锁 |
_primary_term |
同上,主分片重新分配,如重启,就会发生变化 |
found |
是否找到结果标识 |
_source |
真正的数据内容 |
2.2.3、更新文档
使用 put方式 更新,详情如下:
![0](https://img2024.cnblogs.com/blog/1680081/202401/1680081-20240118162746454-816049276.png)
2.2.4、查询文档
4.1、根据id查询
![0](https://img2024.cnblogs.com/blog/1680081/202401/1680081-20240118162746450-807748598.png)
4.2、根据querystring查询
query_string的搜索方式,搜索之前对搜索的关键词分词。
{
"query": {
"query_string": {
"default_field": "title",
"query": "搜索服务器"
}
}
}
2.2.5、删除文档
![0](https://img2024.cnblogs.com/blog/1680081/202401/1680081-20240118162746041-1989645050.png)
3、Kibana的Dev Tools
Kibana的安装:(三):Kibana安装。
在Kibana的管理台中,可通过Dev Tools对数据进行检索、过滤等操作。
![0](https://img2024.cnblogs.com/blog/1680081/202401/1680081-20240118163120359-1970003036.png)
3.1、索引操作
# 创建索引
PUT /user
# 查询索引
GET /user
# 删除索引
DELETE /user
3.1.1、创建索引
![0](https://img2024.cnblogs.com/blog/1680081/202401/1680081-20240118163120657-1108248593.png)
3.2.2、查看索引
2.1、管理台查看
查看创建的索引,在Kibana管理台 Management -> StackManagement -> Index Management 中查看刚创建的索引。
![0](https://img2024.cnblogs.com/blog/1680081/202401/1680081-20240118163121623-1120530079.png)
2.2、命令查看
![0](https://img2024.cnblogs.com/blog/1680081/202401/1680081-20240118163121575-23748576.png)
3.2.3、删除索引
![0](https://img2024.cnblogs.com/blog/1680081/202401/1680081-20240118163120757-951042467.png)
再次查看索引,返回404,索引未找到,表示已经被删除。
![0](https://img2024.cnblogs.com/blog/1680081/202401/1680081-20240118163121571-1180737756.png)
3.2、文档操作
3.2.1、创建文档
# 创建文档,type = _doc
PUT /user/_doc/1
{
"name":"李四",
"age":28,
"city":"杭州"
}
# type = _doc
POST /user/_create/2
{
"name":"王五",
"age":26,
"city":"上海"
}
# type = userinfo
POST /user/userinfo/3
{
"name":"赵六",
"age":35,
"city":"北京"
}
详情如下:
![0](https://img2024.cnblogs.com/blog/1680081/202401/1680081-20240118163329707-61910458.png)
![0](https://img2024.cnblogs.com/blog/1680081/202401/1680081-20240118163329128-187293891.png)
![0](https://img2024.cnblogs.com/blog/1680081/202401/1680081-20240118163329904-1781207062.png)
7.x的版本的type默认为_doc,废弃了类型type,去掉type是为了提高ES处理数据的效率。
Elasticsearc基于Lucene开发的搜索引擎,在ES中不同type下名称相同的filed最终在Lucene中的处理方式是一样的。
两个不同type下的两个name,在ES中同一个索引下其实被认为是同一个filed,必须在两个不同的type中定义相同的filed映射。否则,不同type中的相同字段名称就会在处理中出现冲突的情况,导致Lucene处理效率下降。
3.2.2、查看文档
# 查看文档
GET /user/_doc/1
3.2.3、更新文档
# 更新文档
POST /user/_doc/1
{
"name":"李四",
"age":29,
"city":"杭州"
}
# 查看更新后的文档
GET /user/_doc/1
![0](https://img2024.cnblogs.com/blog/1680081/202401/1680081-20240118163614755-2114565977.png)
![0](https://img2024.cnblogs.com/blog/1680081/202401/1680081-20240118163614903-1762068955.png)
3.2.4、删除文档
# 删除文档
DELETE /user/_doc/1