Elastic Stack(ELK)学习

第二章 ElasticSearch RESTful API



一、创建非结构化索引

PUT /hello 
{
    "settings": {
        "index": {
            "number_of_shards": "2",
            "number_of_replicas": "0"
        }
    }
}

{
    "acknowledged": true,
    "shards_acknowledged": true,
    "index": "hello"
}

DELETE /hello 
{
   "acknowledged": true
}

新建索引时报错

{
  "error" : "Content-Type header [application/x-www-form-urlencoded] is not supported",
  "status" : 406
}

解决办法

编辑head插件的/usr/src/app/_site/vendor.js文件

sudo docker cp 0915c:/usr/src/app/_site/vendor.js ~/Desktop
#修改完后
sudo docker cp  ~/Desktop/vendor.js 0915c:/usr/src/app/_site

修改共有两处:

1.第6886行 /contentType: "application/x-www-form-urlencoded
改为 contentType: “application/json;charset=UTF-8”
2.第7573行 var inspectData = s.contentType === “application/x-www-form-urlencoded” &&
改为 var inspectData = s.contentType === “application/json;charset=UTF-8” &&

二、插入数据

1.指定id插入

URL规则:
POST /{索引}/{类型}/{id}

POST /hunoob/user/1001
#入参
{
"id":1001, "name":"小虎", "age":20, "sex":"男"
}
#响应
{
    "_index": "hunoob",
    "_type": "user",
    "_id": "1001",
    "_version": 1,
    "result": "created",
    "_shards": {
        "total": 1,
        "successful": 1,
        "failed": 0
    },
    "_seq_no": 4,
    "_primary_term": 1
}

2.不指定id插入

POST /hunoob/user
#入参
{
"id":1002, "name":"小红", "age":18, "sex":"女"
}
#响应
{
    "_index": "hunoob",
    "_type": "user",
    "_id": "x-wv3HYBQmiNC6TtoZ29",
    "_version": 1,
    "result": "created",
    "_shards": {
        "total": 1,
        "successful": 1,
        "failed": 0
    },
    "_seq_no": 1,
    "_primary_term": 1
}

在这里插入图片描述

三、更新数据

1.覆盖更新

PUT /hunoob/user/1001
{
"id":1001, "name":"张三", "age":31
}

{
    "_index": "hunoob",
    "_type": "user",
    "_id": "1001",
    "_version": 2,
    "result": "updated",
    "_shards": {
        "total": 1,
        "successful": 1,
        "failed": 0
    },
    "_seq_no": 5,
    "_primary_term": 1
}

更新后版本+1,且sex字段为空
在这里插入图片描述

2.局部更新

POST /hunoob/user/1001/_update
{
    "doc": {
        "age": 41
    }
}

{
    "_index": "hunoob",
    "_type": "user",
    "_id": "1001",
    "_version": 3,
    "result": "updated",
    "_shards": {
        "total": 1,
        "successful": 1,
        "failed": 0
    },
    "_seq_no": 6,
    "_primary_term": 1
}

注意请求方式为POST,url带上_update
在这里插入图片描述

四、搜索数据

1.根据id搜索数据

GET /hunoob/user/1001
#响应
{
    "_index": "hunoob",
    "_type": "user",
    "_id": "1001",
    "_version": 3,
    "_seq_no": 6,
    "_primary_term": 1,
    "found": true,
    "_source": {
        "id": 1001,
        "name": "张三",
        "age": 41
    }
}

2.搜索全部数据

GET /hunoob/user/_search
#响应,默认返回十条数据
{
    "took": 19,
    "timed_out": false,
    "_shards": {
        "total": 3,
        "successful": 3,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": {
            "value": 2,
            "relation": "eq"
        },
        "max_score": 1.0,
        "hits": [
            {
                "_index": "hunoob",
                "_type": "user",
                "_id": "x-wv3HYBQmiNC6TtoZ29",
                "_score": 1.0,
                "_source": {
                    "id": 1002,
                    "name": "小红",
                    "age": 18,
                    "sex": "女"
                }
            },
            {
                "_index": "hunoob",
                "_type": "user",
                "_id": "1001",
                "_score": 1.0,
                "_source": {
                    "id": 1001,
                    "name": "张三",
                    "age": 41
                }
            }
        ]
    }
}

3.根据关键词搜索数据

#搜索年龄为41的数据
GET /user/_search?q=age:41
#响应
{
    "took": 29,
    "timed_out": false,
    "_shards": {
        "total": 3,
        "successful": 3,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": {
            "value": 1,
            "relation": "eq"
        },
        "max_score": 1.0,
        "hits": [
            {
                "_index": "hunoob",
                "_type": "user",
                "_id": "1001",
                "_score": 1.0,
                "_source": {
                    "id": 1001,
                    "name": "张三",
                    "age": 41
                }
            }
        ]
    }
}

4.DSL搜索

Elasticsearch提供丰富且灵活的查询语言叫做DSL查询(Query DSL),它允许你构建更加复杂、强大的查询。
DSL(Domain Specific Language特定领域语言)以JSON请求体的形式出现。

POST /hunoob/user/_search
#请求参数
{
    "query": {
        "match": {
            "age": 18
        }
    }
}
#响应结果
{
    "took": 4,
    "timed_out": false,
    "_shards": {
        "total": 3,
        "successful": 3,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": {
            "value": 1,
            "relation": "eq"
        },
        "max_score": 1.0,
        "hits": [
            {
                "_index": "hunoob",
                "_type": "user",
                "_id": "x-wv3HYBQmiNC6TtoZ29",
                "_score": 1.0,
                "_source": {
                    "id": 1002,
                    "name": "小红",
                    "age": 18,
                    "sex": "女"
                }
            }
        ]
    }
}

五、删除数据

DELETE /hunoob/user/1001
{
    "_index": "hunoob",
    "_type": "user",
    "_id": "1001",
    "_version": 4,
    "result": "deleted",
    "_shards": {
        "total": 1,
        "successful": 1,
        "failed": 0
    },
    "_seq_no": 7,
    "_primary_term": 1
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值