文章目录
索引-类型-字段
分片shards:一台服务器,无法存储大量的数据,ES把一个index里面的数据,分为多个shard,分布式的存储在各个服务器上面。数据的最小单元块
副本replias:一个分布式的集群,难免会有一台或者多台服务器宕机,如果我们没有副本这个概念。就会造成我们的shard发生故障,无法提供正常服务
关键字PUT
POST
GET
DELETE
新建一个索引-类型-字段
1、索引操作
1)创建索引(和type)put
put http://ip:9200/索引名
http://192.168.56.59:9200/mydemo
{
"setting":{
"index":{
"number_of_shards":2,
"number_of_replicas":1
}
},
"mappings":{
"userinfos":{
"properties":{
"userid":{
"type":"string"
},
"username":{
"type":"string"
},
"birthday":{
"type":"date",
"format":"yyyy-MM-dd"
}
}
}
}
}
创建好查看数据
2)删除索引delete
delete http://ip:9200/索引名
3)修改类型post
post http://ip:9200/索引名/类型名/_mapping
http://192.168.56.59:9200/mydemo/userinfos/_mapping
{
"userinfos":{
"properties":{
"age":{
"type":"integer"
}
}
}
}
2、添加数据
post
post http://ip:9200/索引名/类型名/id[不写就自动添加]
http://192.168.56.59:9200/mydemo/userinfos/
{
//按照设置的type格式输入
}
//如下所示
{
"userid":1,
"username":"张三",
"birthday":"1997-5-5",
"say":"test say",
"age":22,
"jobtime":2
}
3、修改数据
post
按照id修改
post http://ip:9200/索引名/类型名/id/_update
http://192.168.56.59:9200/mydemo/userinfos/WEbJxm4Bt5z9jL-OZZip/_update
{
"doc":{
"birthday":"1989-9-9"
}
}
4、查询数据
按照id查询
get
GET http://ip:9200/索引名/类型名/id
http://192.168.56.77:9200/demo/students/w3VVqm4BKRHTvs8Vncbc
简单查询
1.普通模糊查询
关键字:match
//查询名字里有j的
{
"query":{
"match":{
"skill":"java"
}
}
}
2.短语查询
关键字match_phrase
{
"query":{
"match_phase":{
"skill":"java vue"
}
}
}
3.多列查询
关键字: multi_match
fields
只要有一列的条件满足就查询出来
{
"query":{
"multi_match":{
"query":"java",
"fields":["stuname","skill"]
}
}
}
4.分页查询
关键字 from
size
from
定义了目标数据的偏移值,size
定义当前返回的事件数目。默认from
为0,size
为10,即所有的查询默认仅仅返回前10条数据
{
"query":{
"multi_match":{
"skill":"java",
"fields":["stuname","skill"]
}
},
"from":0,
"size":10
}
5.分组/聚合查询
关键字:aggs
terms
stats
分组terms
{
"aggs":{
"query_by_stuname":{
"terms":{
"field":"stuid"
}
}
}
}
分组结果统计
聚合stats
{
"aggs":{
"query_by_stuname":{
"stats":{
"field":"stuage"
}
}
}
}
如果只想要avg
的结果展示,就把stats
替换成avg
聚合函数结果
6.Query string 查询[Java语法常用]
关键字:query_string
{
"query":{
"query_string":{
"query":"张 AND 拳"
}
}
}
7.范围查询
关键字range
gt:>,lt:<,gte:>=,lte<=
{
"query":{
"range":{
"age":{
"gte":15,
"lte":20
}
}
}
}
Filter查询
关键字:filter
bool
查询birthday是1999-9-9的
{
"query":{
"bool":{
"filter":{
"term":{
"birthday":"1999-9-9"
}
}
}
}
}
8.复合查询
关键字:should
must
must_not
{
“query”:{
“bool”:{
“should”:[
{
“match”:{
“username”:“张”
}
},
{
“match”:{
“birthday”:“1999-9-9”
}
}
]
}
}
}