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

x33g5p2x  于2022-06-10 转载在 ElasticSearch  
字(3.1k)|赞(0)|评价(0)|浏览(487)

创建文档并添加数据

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

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

创建一个名为user的索引:

PUT : localhost:9200/user

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

POST : localhost:9200/user/_doc

请求体:
{
    "name":"张三",
    "age":18,
    "sex":"男",
    "email":"111222333@qq.com"
}

如果在添加数据的时候没有指定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,
    "sex":"男",
    "email":"23434353@qq.com"
}
{
    "name":"1+1=王",
    "age":22,
    "sex":"男",
    "email":"123123123@qq.com"
}
{
    "name":"王五",
    "age":25,
    "sex":"女",
    "email":"wangwu@Outlook.com"
}
{
    "name":"curry",
    "age":30,
    "sex":"男",
    "email":"curry30@nba.com"
}

主键查询和全查询

根据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":{			//查询所有
           
        }
    },
    "from":0,					//页码(从第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"		//求平均值的字段
			}
		}
	}
}

相关文章