欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【Elasticsearch】一、基本操作

程序员文章站 2022-07-09 18:49:54
...
这里使用Kibana的Dev Tools作为控制台来与Elasticsearch进行交互,安装教程如下:

【Elasticsearch】windows 10安装Elasticsearch和Kibana

Elasticsearch版本:7.14

一、索引

​ Elasticsearch中的索引与关系数据库中的数据库类型,其是一个相似文档的集合,或者说相似文档的数据库。

  • 查看ES中的所有索引

    GET _cat/indices?v

  • 创建索引

    PUT customer

  • 查看索引信息

    GET customer

  • 删除索引

    DELETE customer

  • 查看索引中的文档数

    GET kibana_sample_data_ecommerce/_count其中kibana_sample_data_ecommerce是Kibana自动的索引,需要手动导入;

  • 查看索引中的前10文档

    GET kibana_sample_data_ecommerce/_search

  • 查看索引的mapping信息

    GET kibana_sample_data_ecommerce/_mapping

二、文档的增删改查

​ 先创建一个用于实验的索引PUT users

1. 增

1.1 _create

_create在创建文档时,如果对应id的文档已存在则会报错,否则创建。

PUT users/_create/1
{
     "user" : "Jack2",
    "post_date" : "2019-05-15T14:12:12",
    "message" : "trying out Elasticsearch"
}

users是索引名称;_create指明创建文档;1则是该文档的id

查看一下刚才创建的文档

GET users/_doc/1

users是索引名称;_doc是索引的type,在es7之后默认均为_doc;1是文档id

文档1的信息:

{
  "_index" : "users", // 索引名称
  "_type" : "_doc", // 索引类型,默认为_doc,es8之后不支持指定该值
  "_id" : "1", // 文档id
  "_version" : 1,
  "_seq_no" : 0,
  "_primary_term" : 1,
  "found" : true,
  "_source" : {
    "user" : "Jack2",
    "post_date" : "2019-05-15T14:12:12",
    "message" : "trying out Elasticsearch"
  }
}

1.2 index方式

​ 不同于_create,index方式创建文档时,若文档存在则会进行覆盖,而不是报错。

PUT users/_doc/1
{
     "user" : "Jack",
    "post_date" : "2019-05-15T14:12:12",
    "message" : "trying out Elasticsearch"
}

2. 查

​ 前面使用过该操作

GET users/_doc/1

3. 改

_update能够在原文档的基础上进行修改。

POST users/_update/1
{
  "doc": {
    "user": "pony",
    "message": "money"
  }
}

"doc"是必须的

4. 删

DELETE users/_doc/1

三、批量操作

1. bulk

_bulk是批量操作,其可以同时执行多个请求,提高效率。具体的格式为

action: index/create/update/delete
metadata: _index,_type,_id
request body: _source

单条操作失败并不会影响其他操作。单次处理数据量建议在5-15MB,默认不超过100MB。

PUT _bulk
{"index":{"_index":"users","_id":"1"}}
{"name":"dukun","post_date" : "2019-05-18T14:12:12","age":18,"phone" : "1806185","sex":"男"}
{"index":{"_index":"users","_id":"2"}}
{"name":"dukun02","post_date" : "2019-05-18T14:12:12","age":25,"phone" : "19888","sex":"男"}
{"create":{"_index":"users","_id":"3"}}
{"name":"dukun03","post_date" : "2019-05-19T14:12:12"}
{"update":{"_index":"users","_id":"3"}}
{"doc" :{"name":"dukun04","phone" : "1806185","age":28,"sex":"男"}}
{"delete": { "_index": "users", "_id": "2" }}

2. mget

​ 批量读取的方法

  • 示例1
GET /_mget
{
 "docs":[
   {
     "_index": "users",
     "_id": "1"
   },
   {
     "_index": "users",
     "_id": "3"
   }
 ]
}
  • 示例2–简化索引字段
GET users/_mget
{
  "ids": ["1","3"]
}
  • 示例3
GET users/_mget
{
  "docs": [
    {
      "_id": "1",
      "_source": false
    },
    {
      "_id": "1",
      "_source": ["name", "age"]
    },
    {
      "_id": "3",
      "_source": {
        "exclude": ["age", "name"]
      }
    },
    {
      "_id": "3",
      "_source": {
        "include": ["age", "sex"]
      }
    }
    ]
}

_source为false表示不返回内容,include指定包含的字段,exclude指定排除的字段;

3. msearch

​ 批量查询,格式类似mget

GET /_msearch
{}
{"query": {"match_all":{}}, "from": 0, "size": 3}
{"index": "users"}
{"query": {"match_all":{}}, "from": 0, "size": 2}

​ 上面的命令先从所有索引中查询出3个文档,再从索引users检索出2个文档;