Elasticsearch的组成与操作(一)

目录

基本概念

1.Elasticsearch和MySQL对比

2.Elasticsearch的分布式

操作索引

1.创建索引的请求格式

2.查看索引

3.删除索引

4.映射配置

5.新增数据

6.修改数据

7.删除数据


基本概念

1.Elasticsearch和MySQL对比

索引(indices)相当于数据库Databases

类型(type)相当于数据表Table

文档(Document)相当于行Row

字段(Field)相当于列 Columns

概念 说明
索引库(indices) indices是index的复数,代表许多的索引,
类型(type) 类型是模拟mysql中的table概念,一个索引库下可以有不同类型的索引,比如商品索引,订单索引,其数据格式不同。不过这会导致索引库混乱,因此未来版本中会移除这个概念
文档(document) 存入索引库原始的数据。比如每一条商品信息,就是一个文档
字段(field) 文档中的属性
映射配置(mappings) 字段的数据类型、属性、是否索引、是否存储等特性

2.Elasticsearch的分布式

shard即分片指数据拆分后的各个部分,replica即副本指每个分片的复制

elasticsearch的分布式导致即使你只有一个节点,它也会默认对你的数据进行分片和副本操作,当你向集群添加新数据时,数据也会在新加入的节点中进行平衡。

操作索引

elasticsearch采用Rest风格API,因此其API就是一次http请求,你可以用任何工具发起http请求

1.创建索引的请求格式

  • 请求方式: PUT
  • 请求路径: /索引库名
  • 请求参数: json格式
    •  存储库的设置:settings
      • number_of_shards:分片数量

      • number_of_replicas:副本数量

示例

PUT /heima
{
  "settings": {
    "number_of_shards": 1
    , "number_of_replicas": 0
  }
}

2.查看索引

GET /索引库名

我们也可以使用*来查询所有索引库配置

GET *

3.删除索引

DELETE /索引库名

4.映射配置

映射是定义文档的过程,文档包含哪些字段,这些字段是否保存,是否索引,是否分词等等

  • 创建映射

        语法

PUT /索引库名/_mapping/类型名称
{
  "properties": {
    "字段名": {
      "type": "类型",
      "index": true,
      "store": true,
      "analyzer": "分词器"
    }
  }
}

        含义

类型名称:就是前面将的type的概念,类似于数据库中的不同表 字段名:任意填写 ,可以指定许多属性,例如:

type:类型,可以是text、long、short、date、integer、object等

index:是否索引,默认为true

store:是否存储,默认为false

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

      请求示例

PUT heima/_mapping/goods
{
  "properties": {
    "title": {
      "type": "text",
      "analyzer": "ik_max_word"
    },
    "images": {
      "type": "keyword",
      "index": "false"
    },
    "price": {
      "type": "float"
    }
  }
}

       响应结果

{
  "acknowledged": true
}
  • 查看映射关系

       语法 

GET /索引库名/_mapping

       示例

GET /heima/_mapping

       响应 

{
  "heima": {
    "mappings": {
      "goods": {
        "properties": {
          "images": {
            "type": "keyword",
            "index": false
          },
          "price": {
            "type": "float"
          },
          "title": {
            "type": "text",
            "analyzer": "ik_max_word"
          }
        }
      }
    }
  }
}
  •  字段属性详解

5.新增数据

通过POST请求,可以向一个已经存在的索引库中添加数据。

  • 语法
POST /索引库名/类型名
{
    "key":"value"
}
  • 示例
POST /heima/goods/
{
    "title":"小米手机",
    "images":"http://image.leyou.com/12479122.jpg",
    "price":2699.00
}
  • 自定义id的语法
POST /索引库名/类型/id值
{
    ...
}
  • 示例 
POST /heima/goods/2
{
    "title":"大米手机",
    "images":"http://image.leyou.com/12479122.jpg",
    "price":2899.00
}
  • 智能映射

在新增数据时你不需要给索引库设置任何mapping映射,它也可以根据你输入的数据来判断类型,动态添加数据映射。例如我们输入

再通过命令查看映射

GET /heima/_mapping

就可以看到系统自动给添加的类型 

6.修改数据

把刚才新增的请求方式改为PUT,就是修改了。不过修改必须指定id,如果没指定或者指定的id不存在就会执行新增操作,示例

PUT /heima/goods/3
{
    "title":"超大米手机",
    "images":"http://image.leyou.com/12479122.jpg",
    "price":3899.00,
    "stock": 100,
    "saleable":true
}

7.删除数据

删除使用DELETE请求,同样,需要根据id进行删除:

DELETE /索引库名/类型名/id值

发布了343 篇原创文章 · 获赞 162 · 访问量 14万+

猜你喜欢

转载自blog.csdn.net/Delicious_Life/article/details/104273102