Elasticsearch概念和基本用法

一、ES基础概念

1.1 基础概念

索引:含有相同属性的文档集合 (索引只能包含英文字母且不能包含中划线)

类型:索引可以定义一个或多个类型,文档必须属于一个类型

文档:文档是可以被索引的基本数据单位

分片:每个索引都有多个分片,分个分片都是一个Lucene索引 (分担索引过大的磁盘的磁盘压力 和 搜索压力)

备份:拷贝一个分片就完成了分片的备份 (提高可用性 和 分担搜索压力)

系统默认是会创建5个分片,1份备份,分片是在创建索引的时候就定义好的不可修改,备份是可以在索引创建后修改的

1.2 ES API 风格

ES是以RESTFul API风格来定义自己的API风格的

  • API基本格式: http://<ip>:<port>/<索引>/<类型>/<文档id>
  • 常用HTTP动词: GET/PUT/POST/DELETE

二、ES基本用法

2.1 创建索引

  • 创建索引需要提前设置好分片和副本数,类型名称和文档字段,创建语法如下
curl -XPUT -u elastic:LiJun123@ https://es-****.public.tencentelasticsearch.com:9200/person -H 'Content-Type: application/json' -d '
{
	"settings":{
		"number_of_shards":3,
		"number_of_replicas":1
	},
	"mappings":{
		"femal":{
			"properties":{
				"name":{
					"type":"text"
				},
				"country":{
					"type":"keyword"
				},
				"age":{
					"type":"integer"
				},
				"date":{
					"type":"date",
					"format":"yyyy-MM-dd"
				}
			}
		}
	}
}
'

2.2 插入文档

2.2.1 指定文档id插入

  • 指定id插入时需要手动填写id,使用PUT方法插入文档,插入语法如下
curl -XPUT -u elastic:LiJun123@ https://es-amsg6ygf.public.tencentelasticsearch.com:9200/people/man/1 -H 'Content-Type: application/json' -d'
{
    "name":"kelly",
    "age":24,
    "country":"china",
    "data":"1996-05-07"
}'
  • 通过postman 指定文档id插入截图 

2.2.2 自动产生文档id插入

  • 自动产生文档id插入不需要指定id,使用POST方法插入文档,插入语法如下:
curl -XPOST -u elastic:LiJun123@ https://es-amsg6ygf.public.tencentelasticsearch.com:9200/people/man/ -H 'Content-Type: application/json' -d'
{
    "name":"james",
    "age":40,
    "country":"america",
    "data":"1977-03-07"
}'
  • 通过postman 自动产生id插入文档截图

2.3 修改文档

2.3.1 直接修改文档

  • 通过文档id和 _update可以完成对指定id的文档修改,语法格式如下:
curl -XPOST -u elastic:LiJun123@ https://es-amsg6ygf.public.tencentelasticsearch.com:9200/people/man/1/_update -H 'Content-Type: application/json' -d'
{
    "doc":{
        "name":"我是kelly"
    }
}
'
  • postman直接修改文档结果

2.3.2 脚本方式修改文档

  • 与直接修改不同的是,脚本修改可以支持多种脚本语言,也可以对数值进行运算,修改文档更灵活
curl -XPOST -u elastic:LiJun123@ https://es-amsg6ygf.public.tencentelasticsearch.com:9200/people/man/1/_update -H 'Content-Type: application/json' -d
'
{
    "script":{
        "lang":"painless",
        # "inline":"ctx._source.age+=10",
        "inline":"ctx._source.age=params.age",
        "params":{
            "age":27
        }
    }
}
'
  • postman通过脚本方式修改截图

2.4 删除数据

2.4.1 删除文档

curl -XDELETE -u username:password https://es-***.public.tencentelasticsearch.com:9200/people/man/1

2.4.2 删除索引

curl -XDELETE -u username:password https://es-***.public.tencentelasticsearch.com:9200/people

2.5 查询数据

2.5.1 简单查询

curl -XGET -u username:password https://es-amsg6ygf.public.tencentelasticsearch.com:9200/people/man/1

2.5.2 条件查询

1.查询所有并显示指定条数

  • 查询指定条数语法
curl -XGET -u username:password https://es-amsg6ygf.public.tencentelasticsearch.com:9200/people/_search -d '
{
	"query":{
		"match_all": {}
	},
	"from":1,
	"size":1
}
'
  • postman查询people索引下指定条数数据截图

2.查询指定关键字并按关键字排序

  • 查询指定关键字并按关键字排序语法
curl -XGET -u username:password https://es-amsg6ygf.public.tencentelasticsearch.com:9200/people/_search -d '
{
	"query":{
		"match":{
			"name":"kelly"
		}
	},
	"sort":[
		{
			"data":{"order":"desc"}
		}	
	]
}'
  • postman查询指定关键字并按关键字排序截图

2.5.3 聚合查询

1.通过指定字段实现聚合查询

  • 聚合查询通过aggs关键字来实现,通过terms指定字段进行聚合查询
curl -XGET -u username:password https://es-amsg6ygf.public.tencentelasticsearch.com:9200/people/_search -d '
{
	"aggs":{
		"group_by_age_count":{
			"terms":{
				"field":"age"
			}
		}
	}
}'
  • postman 发送请求截图

  • postman返回结果

2. 查询指定字段的最大最小值

  • 获取指定字段的最大最小值可以通过调用 max,min来实现,如果需要统计指定字段可以调用stat
curl -XGET -u username:password https://es-amsg6ygf.public.tencentelasticsearch.com:9200/people/_search -d '
{
	"aggs":{
		"max_age_count":{
			"max":{
				"field":"age"
			}
		}
	}
}
'
  • postman 发送请求截图

  • postman返回结果

如果你完整的看到这里并动手实操一遍的话,你已经掌握了Elasticsearch的 增 删 改 查的所有操作,可以参考如下链接进行更详细的学习:https://www.imooc.com/learn/889

猜你喜欢

转载自blog.csdn.net/qq_36441027/article/details/106333799
今日推荐