在上一篇博客(https://blog.csdn.net/qq_28757391/article/details/103749623)中,我们介绍了如何安装启动Elasticsearch,接下来我们介绍如何创建索引库以及一些基础知识。
概念介绍
首先介绍Elasticsearch的一些基本概念,如下表:
概念 | 说明 |
索引库(indices) | indices是index的复数,代表许多的索引。索引库类似Mysql中的数据库。 |
类型(type) | 类型类似Mysql中的表(table)概念,一个索引库下可以有不同类型的索引,比如商品索引,订单索引,其数据格式不同。 |
文档(document) | 存入索引库原始的数据。比如每一条商品信息,就是一个文档。类似Mysql中的表记录。 |
字段(field) | 文档中的属性。类似Mysql中的表字段。 |
映射配置(mappings) | 映射配置(mappings)用来描述字段的数据类型、属性、是否索引、是否存储等特性。类似Mysql中的表结构设计。 |
分片(shard) | 一般一个index包含多个shard。每个shard都是一个最小单元,存储部分数据;每个分片都是一个lucene实例,有完整的建立索引和处理请求的能力。分片克分为主分片和副分片。 |
创建索引库
1、我们利用Elasticsearch提供的restful接口,通过向接口发送http请求的方式进行索引库创建。
PUT http://IP:9200/索引名
{
"settings": {
"number_of_shards": 5, //主分片数
"number_of_replicas": 0 //副本分片数
}
}
2、同样通过向接口发送http请求的方式进行类型的创建。
POST http://IP:9200/索引名/类型名/_mapping
{
"类型名": {
"properties": {
"name": {
"type": "keyword"
},
"age": {
"type": "integer"
},
"address": {
"type": "text"
},
"score": {
"type": "float"
}
}
}
}
//这里我定义了四个字段,分别是name、age、address、score,它们具有不同的数据类型,就像Mysql中可以定义不同的数据类型的字段一样。
想深入了解Elasticsearch支持的数据类型的可以看这篇文章:https://www.jianshu.com/p/01f489c46c38
通过这两步就完成了索引库创建。接下来我们往创建好的索引库中插入数据。
插入数据
POST http://IP:9200/索引名/类型名/
{
"name": "张三",
"address": "杭州市西湖区",
"age": 22,
"score": 97.0
}
这样我们便往创建的索引库插入了一条数据。
查看数据
GET http://IP:9200/索引名/类型名/_search?from=0&&size=10 //from和size为分页参数
返回的数据格式如下:
{
"took": 3,
"timed_out": false,
"_shards": {
"total": 3,
"successful": 3,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 3,
"max_score": 1.0,
"hits": [
{
"_index": "test",
"_type": "test",
"_id": "fBm9Q3EBTc43B2jFangd",
"_score": 1.0,
"_source": {
"name": "王五",
"address": "杭州市余杭区",
"age": 26,
"score": 90.5
}
},
{
"_index": "test",
"_type": "test",
"_id": "fRnEQ3EBTc43B2jFdXjd",
"_score": 1.0,
"_source": {
"name": "李四",
"address": "杭州市江干区",
"age": 25,
"score": 94.0
}
},
{
"_index": "test",
"_type": "test",
"_id": "fhnFQ3EBTc43B2jFtnhd",
"_score": 1.0,
"_source": {
"name": "张三",
"address": "杭州市西湖区",
"age": 28,
"score": 97.0
}
}
]
}
}
清空索引库数据
POST http://IP:9200/索引名/类型名/_delete_by_query
{
"query": {
"match_all": {}
}
}
批量删除索引库数据
POST http://IP:9200/索引名/类型名/_delete_by_query
{
"query": {
"match": {
"name": "张三"
}
}
}
删除索引库
DELETE http://IP:9200/索引名