赞
踩
目录
- PUT /shop
- {
- "settings": {
- "属性名": "属性值"
- }
- }
GET /shop
DELETE /shop
有了索引库
,等于有了数据库中的database
。接下来就需要索引库中的类型
了,也就是数据库中的表
。创建数据库表需要设置字段约束,索引库也一样,在创建索引库的类型时,需要知道这个类型下有哪些字段,每个字段有哪些约束信息,这就叫做字段映射(mapping)
。
字段的约束包括但不限于:
语法格式:
- PUT /索引库名/_mapping/类型名称
- {
- "properties": {
- "字段名": {
- "type": "类型",
- "index": true,
- "store": true,
- "analyzer": "分词器"
- }
- }
- }
type为字段的数据类型,下面列出了几种最为常见的类型。
String类型,又分两种:
Numerical:数值类型,分两类:
基本数据类型:long、interger、short、byte、double、float、half_float;
浮点数的高精度类型:scaled_float。
Date:日期类型
elasticsearch可以对日期格式化为字符串存储,但是建议我们存储为毫秒值,存储为long,节省空间。
Array:数组类型
Object:对象
- {
- id: 123,
- price: 25.5,
- goods:{
- name: "apple",
- amount: 5
- }
- }
如果存储到索引库的是对象类型,例如上面的goods,会把goods编程两个字段:goods.name和goods.amount
index影响字段的索引情况。
index的默认值就是true,也就是说你不进行任何配置,所有字段都会被索引。但是有些字段是我们不希望被索引的,比如商品的图片信息,就需要手动设置index为false。
是否将数据进行独立存储。
原始的文本会存储在_source
里面,默认情况下其他提取出来的字段都不是独立存储的,是从_source
里面提取出来的。当然你也可以独立的存储某个字段,只要设置store:true即可,获取独立存储的字段要比从_source中解析快得多,但是也会占用更多的空间,所以要根据实际业务需求来设置,默认为false。
事例:
- PUT /shop/_mapping/goods
- {
- "properties": {
- "title": {
- "type": "text",
- "analyzer": "ik_max_word"
- },
- "subtitle": {
- "type": "text",
- "analyzer": "ik_max_word"
- },
- "images": {
- "type": "keyword",
- "index": "false"
- },
- "price": {
- "type": "float"
- }
- }
- }
GET /shop/_mapping/goods
响应结果:
如果文档没有唯一属性字段,可以通过POST方式新增,es会为文档生成唯一的uuid。
- POST /shop/goods
- {
- "title":"香蕉",
- "images":"http://image.xxx.com/123411.jpg",
- "price":3.12
- }
结果:
- {
- "_index" : "shop",
- "_type" : "goods",
- "_id" : "-yxENHQBsVejmPWpWQ2w",
- "_version" : 1,
- "result" : "created",
- "_shards" : {
- "total" : 2,
- "successful" : 1,
- "failed" : 0
- },
- "_seq_no" : 0,
- "_primary_term" : 1
- }
如果需要用自定义id进行新增文档,可以使用PUT方式:
- POST /shop/goods/3
- {
- "title":"西瓜",
- "images":"http://image.xxx.com/435252.jpg",
- "price":15.60
- }
结果:
- {
- "_index" : "shop",
- "_type" : "goods",
- "_id" : "3",
- "_version" : 1,
- "result" : "created",
- "_shards" : {
- "total" : 2,
- "successful" : 1,
- "failed" : 0
- },
- "_seq_no" : 0,
- "_primary_term" : 1
- }
根据id查看指定文档:
GET /shop/goods/-yxENHQBsVejmPWpWQ2w
结果:
- {
- "_index" : "shop",
- "_type" : "goods",
- "_id" : "-yxENHQBsVejmPWpWQ2w",
- "_version" : 1,
- "_seq_no" : 0,
- "_primary_term" : 1,
- "found" : true,
- "_source" : {
- "title" : "香蕉",
- "images" : "http://image.xxx.com/123411.jpg",
- "price" : 3.12
- }
- }
通过PUT方式,必须指定id,如果id存在则进行修改, 不存在则进行新增。
- PUT /shop/goods/3
- {
- "title":"西瓜1",
- "images":"http://image.xxx.com/435252.jpg",
- "price":12.60
- }
结果:
如果是新增,result结果为created,更新则为updated,每更新一次,version + 1。
- {
- "_index" : "shop",
- "_type" : "goods",
- "_id" : "3",
- "_version" : 4,
- "result" : "updated",
- "_shards" : {
- "total" : 2,
- "successful" : 1,
- "failed" : 0
- },
- "_seq_no" : 3,
- "_primary_term" : 1
- }
根据id进行删除:
DELETE /shop/goods/3
删除所有数据:
- POST shop/_delete_by_query
- {
- "query": {
- "match_all": {}
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。