1.HTTP操作
- 幂等性和非幂等性的概念:幂等通俗来说是指不管进行多少次重复操作,都是实现相同的结果。在REST风格的请求中,GET,PUT,DELETE都是幂等性操作,而POST不是。
1.索引操作
- 创建索引:创建索引等同于在关系型数据库中的创建数据库。
// 请求方式使用PUT,创建一个名称叫做phone的索引
http://127.0.0.1:9200/phone
{
"acknowledged": true, // 响应结果
"shards_acknowledged": true,// 分片结果
"index": "phone" // 索引名称
}
- 查看所有索引
// 请求方式使用GET
http://127.0.0.1:9200/_cat/indices?v
//
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
yellow open phone FmPm9Ca5QpqP4Pl82rFd5g 1 1 0 0 208b 208b
- 查看单个索引
// 请求方式使用GET,查看名称为phone的索引
http://127.0.0.1:9200/phone
- 删除索引
// 请求方式使用DELETE,删除名称为phone的索引
http://127.0.0.1:9200/phone
2.文档操作
- 创建文档:文档等同于关系型数据库中的表数据,添加的数据格式为JSON格式。
// 请求方式使用POST
http://127.0.0.1:9200/phone/_doc
请求体内容为json字符串:
{
"title":"小米手机",
"category":"小米",
"images":"http://www.gulixueyuan.com/xm.jpg",
"price":3999.00
}
// 创建文档时指明文档唯一性标识,即ID
// 请求方式使用POST或者PUT
http://127.0.0.1:9200/phone/_doc/001
- 查看文档:查看文档时需要指明文档的唯一性标识
// 请求方式使用GET
http://127.0.0.1:9200/phone/_doc/001
- 修改文档
// 和创建文档一样,请求方式使用POST,请求体发生变化
http://127.0.0.1:9200/phone/_doc/001
- 修改字段:修改某一条数据的局部信息
# 修改华为手机的单价为4999
# 发送post方式的请求,请求体内容如下
{
"doc": {
"price":3000.00
}
}
http://127.0.0.1:9200/phone/_update/001
- 删除文档
请求方式使用DELETE
http://127.0.0.1:9200/phone/_doc/001
- 条件删除文档:根据条件对多条数据进行删除
请求方式使用POST
请求体如下:
{
"query": {
"match":{
"price":4000.00 // price为查询的字段
}
}
}
http://127.0.0.1:9200/shopping/_delete_by_query
3.映射操作
索引库等于有了数据库的database,创建索引库中的映射等同于数据库中的表结构。
- 创建映射
请求方式使用PUT
请求体如下
{
"properties": {
"name":{
"type": "text",
"index": true //表示是否索引默认为true。字段会被索引,则可以用来进行搜索
},
"sex":{
"type": "text",
"index": false
},
"age":{
"type": "long",
"index": false
}
}
}
http://127.0.0.1:9200/student/_mapping
- 查看映射
请求方式使用GET
http://127.0.0.1:9200/student/_mapping
- 索引映射关联
请求方式使用PUT
请求体如下:
{
"settings": {},
"mappings": {
"properties": {
"name":{
"type": "text",
"index": true
},
"sex":{
"type": "text",
"index": false
},
"age":{
"type": "long",
"index": false
}
}
}
}
http://127.0.0.1:9200/student1
4.高级查询
- 查询所有文档
请求方式使用GET
请求体如下:
{
"query":{
"match_all":{
}
}
}
http://127.0.0.1:9200/student/_search
- 匹配查询
请求方式使用GET
请求体如下:
{
"query":{
"match": {
"name":"zhangsan" // 匹配name为zhangsan的
}
}
}
http://127.0.0.1:9200/student/_search
- 字段匹配查询
请求方式使用GET
请求体如下:
{
"query": {
"multi_match": {
"query": "zhangsan",
"fields":["name","nickname"]
}
}
}
http://127.0.0.1:9200/student/_search
- 关键字精确查询:term 查询,精确的关键词匹配查询,不对查询条件进行分词。
请求方式使用GET
请求体如下:
{
"query": {
"term": {
"name":{
"value":"lisi" // 查询name为lisi的
}
}
}
}
http://127.0.0.1:9200/student/_search
- 多关键字精确查询:terms 查询和 term 查询一样,但它允许你指定多值进行匹配。
请求方式使用GET
请求体如下:
{
"query": {
"terms": {
"name":["zhangsan","lisi"] // name为zhangsan,lisi都查询出来
}
}
}
http://127.0.0.1:9200/student/_search
- 指定查询字段
请求方式使用GET
请求体如下:
{
"_source": ["name","nickname"], //只想获取name,nickname两个字段
"query": {
"terms": {
"nickname": ["zhangsan"]
}
}
}
http://127.0.0.1:9200/student/_search
- 过滤字段
请求方式使用GET
请求体如下:
{
"_source":{
//includes指定要显示的字段
//excludes指定不想要显示的字段
"includes":["name","nickname"],
"excludes":["sex","age"]
},
"query": {
"terms":{
"nickname":["zhangsan"]
}
}
}
http://127.0.0.1:9200/student/_search
- 组合查询:
bool
把各种其它查询通过must
(必须)、must_not
(必须不)、should
(应该)的方式进行组合
请求方式使用GET
请求体如下:
{
"query": {
"bool": {
"must": [
{
"match": {
"name":"zhangsan"
}
}
],
"must_not":[
{
"match":{
"age":40
}
}
],
"should":[
{
"match":{
"sex":"男"
}
}
]
}
}
}
- 范围查询:range 查询找出那些落在指定区间内的数字或者时间