微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

【Elasticsearch】- elasticsearch文档数据的增删改查

创建文档并添加数据

Elasticsearch中的文档就相当于MysqL数据库中的表,文档中的数据格式为JSON格式。

首先创建一个索引(数据库),然后在索引中创建文档(表),并添加数据。

创建一个名为user的索引:

PUT : localhost:9200/user

在这里插入图片描述

向user索引中创建文档并添加数据:

POST : localhost:9200/user/_doc

请求体:
{
    "name":"张三","age":18,"sex":"男","email":"[email protected]"
}

在这里插入图片描述

如果在添加数据的时候没有指定id,Elasticsearch会自动生成一个随机id。 但是使用随机生成的id进行查询的时候会比较复杂,因此,我们也可以手动给数据添加id

手动给数据添加id只需要在请求路径后面加上指定id即可,如下:

POST : localhost:9200/user/_doc/10001
或
PUT:localhost:9200/user/_doc/10001  (在指定id的条件下,可以使用PUT请求方式)

在这里插入图片描述

修改文档数据

全量修改

PUT :localhost:9200/user/_doc/10001

在这里插入图片描述

局部数据修改

POST:localhost:9200/user/_update/10001

在这里插入图片描述

删除文档数据

DELETE : localhost:9200/user/_doc/10001

在这里插入图片描述

查询文档数据

在进行查询之前先向user索引中添加几条数据


{
    "name":"李四","age":16,"email":"[email protected]"
}
{
    "name":"1+1=王","age":22,"email":"[email protected]"
}
{
    "name":"王五","age":25,"sex":"女","email":"wangwu@outlook.com"
}
{
    "name":"curry","age":30,"email":"[email protected]"
}

主键查询和全查询

根据id查询
GET : localhost:9200/user/_doc/10001

在这里插入图片描述

查询所有数据

GET : localhost:9200/user/_search

在这里插入图片描述

条件查询

方式一:请求路径中添加查询

GET : localhost:9200/user/_search?q=name:王

在这里插入图片描述

方式二:请求中添加查询

GET : localhost:9200/user/_search

{
    "query":{
        "match":{
            "name":"王"
        }
    }
}

在这里插入图片描述

分页查询

GET : localhost:9200/user/_search

{
    "query":{
        "match_all":{			//查询所有
           
        }
    },"from":0,//页码(从第0页开始)
    "size":2					//每页显示条数
}

在这里插入图片描述

查询部分属性

GET : localhost:9200/user/_search

{
    "query":{
        "match_all":{			//查询所有
           
        }
    },//页码(从第0页开始)
    "size":2,//每页显示条数
    "_source":["name","age"]			//需要查询属性
}

在这里插入图片描述

查询排序

GET : localhost:9200/user/_search

{
    "sort":{
        "age":{
            "order":"asc"		//按年龄升序查询
        }
    }
}

在这里插入图片描述

多条件查询

1. 多个条件同时满足(and)

GET : localhost:9200/user/_search

{
    "query":{
        "bool":{
            "must":[
                {
                    "match":{
                        "name":"王"
                    }
                },{
                    "match":{
                        "sex":"男"
                    }
                }
            ]
        }
    }
}

在这里插入图片描述

2. 满足多个条件中的一个(or)

GET : localhost:9200/user/_search

{
    "query":{
        "bool":{
            "should":[
                {
                    "match":{
                        "name":"王"
                    }
                },{
                    "match":{
                        "name":"张"
                    }
                }
            ]
        }
    }
}

在这里插入图片描述

范围查询

GET : localhost:9200/user/_search

{
    "query":{
        "bool":{
            "filter":{
                "range":{
                    "age":{
                        "gt":22
                        // gt: > 大于(greater than)
						// lt: < 小于(less than)
						// gte: >= 大于或等于(greater than or equal to)
						// lte: <= 小于或等于(less than or equal to)
                    }
                }
            }
        }
    }
}

在这里插入图片描述

完全匹配查询

GET : localhost:9200/user/_search

{
    "query":{
        "match_phrase":{
            "name":"1+1=王"
        }
    }
}

在这里插入图片描述

聚合查询

分组

GET : localhost:9200/user/_search

{
	"aggs":{		//聚合操作
		"age_group":{		//名称,随意起名
			"terms":{		//分组
				"field":"age"		//分组字段
			}
		}
	}
}

在这里插入图片描述

求平均值

GET : localhost:9200/user/_search

{
	"aggs":{		//聚合操作
		"age_avg":{		//名称,随意起名
			"avg":{		//求平均值
				"field":"age"		//求平均值的字段
			}
		}
	}
}

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐