带你使用Elasticsearch中提供的Rest风格API, 快来快来, 不要错过哦~~

核能气质少年 提交于 2020-02-26 19:15:34

Rest风格API

elasticsearch提供了Rest风格的API,即http请求接口

1. 基本概念

Elasticsearch也是基于Lucene的全文检索库,本质也是存储数据,很多概念与MySQL类似的。

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

2. 索引操作

2.1 创建索引:put请求

put book
{
	"settings":{
		"number_of_shards":1,          /*分片数量*/
		"number_of_replicas":0         /*副本数量*/
	}
}

2.2 查看索引:get请求

get 索引库名

  • 我们可以使用*来查询所有索引库

2.3 删除索引:delete请求

delete 索引库名

3.映射配置

创建索引库,就相当于mysql创建“数据库”。接着我们来配置映射,相当于创建“表结构”。

  • 在ElasticSearch中,我们常配置:
    • 字段的数据类型
    • 是否要存储
    • 是否要索引
    • 是否分词
    • 分词器是什么

3.1 创建映射关系

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分词器
  • 实例
/* 1.先创建索引 */
put czxy

/* 2.创建映射关系 */
put czxy/_mapping/book
{
  "properties": {
    "title": {
      "type": "text",
      "analyzer": "ik_max_word"
    },
    "images": {
      "type": "keyword",
      "index": "false"
    },
    "price": {
      "type": "float"
    }
  }
}

3.2 查看映射关系

get /索引库名/_mapping

3.3 字段属性详解

1) type

  • Elasticsearch中支持的数据类型非常丰富
    • String 类型,又分为两种:
      • text:可分词,不可参与聚合
      • keyword:不可分词,数据会作为完整字段进行匹配,可以参与集合
    • Numerical:数值类型,分两类:
      • 基本数据类型:long、interger、short、byte、double、float、half_float
      • 浮点数的高进度类型:scaled_float
      • 需要指定一个精度因子,比如10或100。elasticsearch会把真实值乘以这个因子后存储,取出时再还原。
    • Date:日期类型
      • elasticsearch可以对日期格式化为字符串存储,但是建议我们存储为毫秒值,存储为long,节省空间。

2)index

index影响字段的索引情况

  • true:字段会被索引,则可以用来进行搜索。默认值就是true;
  • false:字段不会被索引,不能用来搜索。

index的默认值就是true,也就是说你不进行任何配置,所有字段都会被索引。但是有些字段是我们不希望被索引的,比如商品的图片信息,就需要手动设置index为false。

3)store

是否将数据进行额为存储。

Elasticsearch在创建文档索引时,会将文档中的原始数据备份,保存到一个叫做‘_source’的属性中。而且我们可以通过过滤‘ _source’来选择哪些要显示,哪些不显示。

而如果设置store为true,就会在‘_source’以外额为存储一份数据,多余,因此一般我们都会将store设置为false,事实上,store的默认值就是false

备注(展示无查询操作与聚合操作)后期更新
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!