一.基础概念:
1.集群和节点:
集群: 一个集群是由一个或多个节点组合而成,每一个集群都有一个唯一的名字,默认是ElasticSearch,所有的节点都是通过cluster_name(集群的名字)加入集群的,每一个节点都有自己的名字,比如slave1,slave2等,
2.索引:
含有相同属性的文档集合,例如可以用一个索引代表消费者的数据,另一个索引代表产品的数据,
3.类型:
索引可以定义一个或多个类型,文档必须属于一个类型
4.文档:
文档是可以被索引的基本数据单位,比如说一个用户的基本信息,一篇文章的数据等,是整个ES中最小的存储单位
5.总结:
索引相当于一个数据库,类型相当于数据库中的表,文档相当于表中的一行数据记录
6.分片:
每个索引都有多个分片,每个分片是一个Lucene索引好处: 假设一个索引的数据量很大,就会造成硬盘压力很大,同时搜索速到也会出现瓶颈,如果把索引进行分片,可以大大分散压力,加快搜索效率
7.备份:
拷贝一份分片就完成了分片的备份好处: 当一个主分片失败或者出现问题时,备份的分片就可以代替工作,从而提高了ES的可用性,备份的分片还可以执行搜索操作以分摊搜索的压力,ES在创建时会默认创建5个分片,一份备份,这个数量是可以修改的,分片的数量只有在创建索引的时候指定,不能再后期进行修改,而备份是可以动态修改的。
二.索引的创建:
API基本格式 http://<ip>:<port>/<索引>/<类型>/<文档id>
常用HTTP动词 GET/PUT/POST/DELETE
创建索引,通过浏览器创建,然后会在概览中显示,细边框是粗边框的备份
1.创建索引分类:
1).非结构化创建:
如果看到mappings的值为空就表示是非结构化索引,可以通过在复合查询中进行添加:
book/novel/_mappings
{
"novel": {
"properties": {
"title": {
"type": "text"
}
}
}
}
2).结构化创建:
通过postman创建新的索引:
请求方式为PUT,请求地址为127.0.0.1:9200/people (people为新的索引的名称)
参数格式为json,参数数据如下:
{
"settings": {
"number_of_shards": 3,
"number_of_replicas": 1
},
"mappings": {
"man": {
"properties": {
"name": {
"type": "text"
},
"country": {
"type": "keyword"
},
"age": {
"type": "integer"
},
"date": {
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis "
}
}
}
}
}
三.数据插入:
文档id:是一个唯一的索引值,指向我们的文档id
方式一.指定文档id插入:
通过postman进行数据插入: PUT请求
127.0.0.1:9200/people/man/1 man是类型,1表示id
{
"name":"李国辉",
"country":"China",
"age":25,
"date": "1992-12-29"
}
显示成功:
方式二.自动产生文档id插入:
通过postman进行数据插入: post请求
127.0.0.1:9200/people/man/
{
"name":"李国辉一号",
"country":"China",
"age":24,
"date": "1992-12-29"
}
数据显示(指定id生成的id为1,没有指定的就是默认生成的id):
四.数据修改:
方式一.直接修改文档:
通过postman进行修改:
127.0.0.1:9200/people/man/1/_update 传入修改的类型是man,和要修改的id为1,_update表明这条数据被修改过
{
"doc": {
"name": "一个好人" //把name的值修改成一个好人
}
}
结果显示:
修改成功返回:
方式二.脚本修改文档:
127.0.0.1:9200/people/man/1/_update
{
"script": {
"lang": "painless",
"inline": "ctx._source.age += 10"
}
}
或者把修改提出来写:
{
"script": {
"lang": "painless",
"inline": "ctx._source.age += params.age", //ctx 表示ES的上下文,_source表示当前的文档
"params": {
"age": 100
}
}
}
这两种方式都可以
五.数据删除:
1.删除文档:
127.0.0.1:9200/people/man/1 请求方式 DELETE
2.删除索引:
在head上可以直接进行删除,也可以在postman上进行删除
127.0.0.1:9200/people 索引删除,其下面所有的数据都删除
以上就完成了elasticSearch的简单操作,下面会着重研究查询等…