Elasticsearch为我们项目中数量级较大的搜索服务提供了性能和速度上的帮助,Elasticsearch提供了Rest风格的API,即http请求接口,根据请求的不同也是分为PUT,GET,POST,DELETE,在Elasticsearch中很多名词都是与MySQL相对应的,如下:

索引—>数据库

类型—>数据表

文档—>行

字段—>列


1.创建索引(创建数据库)

创建索引的时候需要注意一点,你的索引名命名要规范,这里可以自行百度.

put world
{
  "settings":{
    "number_of_shards":1,			/*分片数量*/
    "number_of_replicas":0			/*副本数量*/
  }
}
//这个分片和副本,暂时先不管他.

2.删除索引(删除数据库)

delete world

3.创建映射关系(创建字段名和属性等)

#在有索引的基础上才能创建(在有库的基础上创建表和表内的属性)
------写法1正常mapping创建persion映射关系
put world/_mapping/persion----------------------------------
{
  "properties": {
    "name": {
      "type": "text",
      "analyzer": "ik_max_word"
    },
    "sex": {
      "type": "text",
      "index": true
    },
    "age": {
      "type": "long"
    }
  }
}
------写法2自定义mapping创建persion映射关系--------------------------------
PUT world
{
  "mappings": {
    "persion": {
      "properties": {
        "name": {
          "type": "text",
          "analyzer": "ik_max_word"
        },
        "sex": {
          "type": "text",
          "index": true
        },
        "age": {
          "type": "long"
        }
      }
    }
  }
}

数据解析:

PUT /索引库名/_mapping/类型名称
{
  "properties": {
    "字段名": {
      "type": "类型",
      "index": true,
      "store": true,
      "analyzer": "分词器"
    }
  }
}
类型名称:基本概念中所说的type,类似于数据库中的表

字段名:类似于数据库中的列名。
-----------------------------------------------------------------------------------
type的类型1:
可以是String类型的:text、keyword等
※这里需要注意一下,text和keyword是有区别的
text是支持分词操作的,不可以参与聚合
keyword是不支持分词操作的,数据会作为完整字段进行匹配,可以参与聚合

type的类型2:
可以 是Numerical类型的:long、interger、short、byte、double、float、half_float等

type的类型3:
可以是Date类型:处褚岑为long
------------------------------------------------------------------------------------
index:是否被索引来搜索,默认为true

store:是否对数据进行额外存储,默认为false

analyzer:分词器,这里的`ik_max_word`即使用ik分词器

4.查看映射关系(查看表)

get world/_mapping/persion

5.添加数据(添加数据到表中)

POST world/persion
{
  "name" : "jack",
  "sex" : "boy",
  "age" : 18
}

es删除索引但是磁盘不释放 elasticsearch删除索引会删除数据吗_es

6.更新数据(更新表中数据)

PUT world/persion/IpheZHEB1uk_PYXuZvA-
{
  "name" : "rose",
  "sex" : "girl",
  "age" : 18
}

es删除索引但是磁盘不释放 elasticsearch删除索引会删除数据吗_elasticsearch_02

7.查询操作

简单查询:

指定id查询
get world/persion/IpheZHEB1uk_PYXuZvA-
指定id查询,检索指定内容
get world/persion/IpheZHEB1uk_PYXuZvA-?_source=name,sex

(高级查询在下一篇文章里)

8.删除操作:

1.根据主键删除:
DELETE world/persion/I5hfZHEB1uk_PYXucfDr(主键)
2.根据匹配条件删除:

_delete_by_query(通过查询的数据进行删除)

POST world/persion/_delete_by_query
{
  "query":{
    "term":{
      "_id":"_Kg6bXEBaJ4easjLYQXw"
    }
  }
}
3.一次性删除所有数据:
POST world/persion/_delete_by_query?pretty
{
  "query" : {
    "match_all" : {
    }
  }
}