【Elasticsearch】一、基本操作
这里使用Kibana的Dev Tools作为控制台来与Elasticsearch进行交互,安装教程如下:
【Elasticsearch】windows 10安装Elasticsearch和Kibana
Elasticsearch版本:7.14
一、索引
Elasticsearch中的索引与关系数据库中的数据库类型,其是一个相似文档的集合,或者说相似文档的数据库。
-
查看ES中的所有索引
GET _cat/indices?v
-
创建索引
PUT customer
-
查看索引信息
GET customer
-
删除索引
DELETE customer
-
查看索引中的文档数
GET kibana_sample_data_ecommerce/_count
,其中kibana_sample_data_ecommerce
是Kibana自动的索引,需要手动导入; -
查看索引中的前10文档
GET kibana_sample_data_ecommerce/_search
-
查看索引的mapping信息
GET kibana_sample_data_ecommerce/_mapping
二、文档的增删改查
先创建一个用于实验的索引PUT users
。
1. 增
1.1 _create
_create在创建文档时,如果对应id的文档已存在则会报错,否则创建。
PUT users/_create/1
{
"user" : "Jack2",
"post_date" : "2019-05-15T14:12:12",
"message" : "trying out Elasticsearch"
}
users是索引名称;_create指明创建文档;1则是该文档的id
查看一下刚才创建的文档
GET users/_doc/1
users是索引名称;_doc是索引的type,在es7之后默认均为_doc;1是文档id
文档1的信息:
{
"_index" : "users", // 索引名称
"_type" : "_doc", // 索引类型,默认为_doc,es8之后不支持指定该值
"_id" : "1", // 文档id
"_version" : 1,
"_seq_no" : 0,
"_primary_term" : 1,
"found" : true,
"_source" : {
"user" : "Jack2",
"post_date" : "2019-05-15T14:12:12",
"message" : "trying out Elasticsearch"
}
}
1.2 index方式
不同于_create,index方式创建文档时,若文档存在则会进行覆盖,而不是报错。
PUT users/_doc/1
{
"user" : "Jack",
"post_date" : "2019-05-15T14:12:12",
"message" : "trying out Elasticsearch"
}
2. 查
前面使用过该操作
GET users/_doc/1
3. 改
_update
能够在原文档的基础上进行修改。
POST users/_update/1
{
"doc": {
"user": "pony",
"message": "money"
}
}
"doc"是必须的
4. 删
DELETE users/_doc/1
三、批量操作
1. bulk
_bulk
是批量操作,其可以同时执行多个请求,提高效率。具体的格式为
action: index/create/update/delete
metadata: _index,_type,_id
request body: _source
单条操作失败并不会影响其他操作。单次处理数据量建议在5-15MB,默认不超过100MB。
PUT _bulk
{"index":{"_index":"users","_id":"1"}}
{"name":"dukun","post_date" : "2019-05-18T14:12:12","age":18,"phone" : "1806185","sex":"男"}
{"index":{"_index":"users","_id":"2"}}
{"name":"dukun02","post_date" : "2019-05-18T14:12:12","age":25,"phone" : "19888","sex":"男"}
{"create":{"_index":"users","_id":"3"}}
{"name":"dukun03","post_date" : "2019-05-19T14:12:12"}
{"update":{"_index":"users","_id":"3"}}
{"doc" :{"name":"dukun04","phone" : "1806185","age":28,"sex":"男"}}
{"delete": { "_index": "users", "_id": "2" }}
2. mget
批量读取的方法
- 示例1
GET /_mget
{
"docs":[
{
"_index": "users",
"_id": "1"
},
{
"_index": "users",
"_id": "3"
}
]
}
- 示例2–简化索引字段
GET users/_mget
{
"ids": ["1","3"]
}
- 示例3
GET users/_mget
{
"docs": [
{
"_id": "1",
"_source": false
},
{
"_id": "1",
"_source": ["name", "age"]
},
{
"_id": "3",
"_source": {
"exclude": ["age", "name"]
}
},
{
"_id": "3",
"_source": {
"include": ["age", "sex"]
}
}
]
}
_source为false表示不返回内容,include指定包含的字段,exclude指定排除的字段;
3. msearch
批量查询,格式类似mget
GET /_msearch
{}
{"query": {"match_all":{}}, "from": 0, "size": 3}
{"index": "users"}
{"query": {"match_all":{}}, "from": 0, "size": 2}
上面的命令先从所有索引中查询出3个文档,再从索引users检索出2个文档;
上一篇: perl - 基础
下一篇: elasticsearch简单操作(一)