(Rest风格API)Elasticsearch索引操作、映射配置、数据操作、查询操作

一、索引操作

1.使用kibana创建索引

1.请求方式:put

2.请求路径:索引库名

3.请求参数:json格式

put book

{

  "settings":{

    "number_of_shards":1, /*分片数量*/

    "number_of_replicas":0 /*副本数量*/

  }

}

  1. number_of_shards 是指索引要做多少个分片,只能在创建索引时指定,后期无法修改。
  2. number_of_replicas 是指每个分片有多少个副本,后期可以动态修改
  3. 什么是分片?

ES中所存数据的文件块,也是数据的最小单元块。假如有2个分片,插入10条数据,默认,每个分片存5条。

2.查看索引:get请求

get 索引库名

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

3.删除索引:delete请求

delete 索引库名

二、映射配置

1.创建映射关系

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

  1. 类型名称:基本概念中所说的type,类似于数据库中的表
    1. 字段名:类似于数据库中的列名。
      1. type:类型,可以是text、keyword、long、short、date、integer、object等
      2. index:是否索引,默认为true
      3. store:是否存储,默认为false
      4. 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"
    }
  }
}

2.查看映射关系

GET /索引库名/_mapping

3.字段属性详解

(1)type

  1. Elasticsearch中支持的数据类型非常丰富
    1. String类型,又分两种:
      1. text修饰字符串,默认进行分词,并生成索引。不能用来过滤、排序和聚合等操作。
      2. keyword修饰字符串,不会分词,不会建立索引。常常被用来过滤、排序和聚合。
    2. Numerical:数值类型,分两类
      1. 基本数据类型:long、interger、short、byte、double、float、half_float
      2. 浮点数的高精度类型:scaled_float
      3. 需要指定一个精度因子,比如10或100。elasticsearch会把真实值乘以这个因子后存储,取出时再还原。
    3. Date:日期类型
      1. elasticsearch可以对日期格式化为字符串存储,但是建议我们存储为毫秒值,存储为long,节省空间。

(2)index

index影响字段的索引情况。

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

index的默认值就是true,也就是说你不进行任何配置,所有字段都会被索引。

但是有些字段是我们不希望被索引的,比如商品的图片信息,就需要手动设置index为false。

(3)store

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

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

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

三、数据操作

1.添加数据

语法:没有id

POST _index/_type/

{

  "属性": "值",

  ....

}

实例

POST czxy/book/
{
  "title": "标题",
  "price": 1234
}

2.添加或更新数据

语法:数据存在更新;如果不存在添加(指定id)

PUT _index/_type/_id

{

  "属性": "值",

  ....

}

实例

PUT czxy/book/b001

{

  "title": "标题123",

  "price": 1234

}

3.删除数据

语法:DELETE _index/_type/_id

实例:DELETE czxy/book/b001

四、查询操作

1.简单查询

指定id查询:GET czxy/book/b001

指定id查询,检索指定内容:GET czxy/book/b001?_source=title,price

2.高级查询

(1)准备数据

PUT czxy2
PUT czxy2/_mapping/user
{
  "properties": {
    "username": {
      "type": "text",
      "analyzer": "ik_max_word"
    },
    "city": {
      "type": "keyword"
    },
    "age": {
      "type": "float"
    }
  }
}


PUT czxy2/user/u001
{
  "username": "张三",
  "city": "山西",
  "age": 18
}

PUT czxy2/user/u002
{
  "username": "张四",
  "city": "山东",
  "age": 20
}

PUT czxy2/user/u003
{
  "username": "张三三",
  "city": "山东",
  "age": 22
}

(2)查询所有(match_all:检索所有的数据)

GET _search
{
  "query": {
    "match_all": {}
  }
}

(3)查询指定索引的所有

GET czxy2/_search
{
  "query": {
    "match_all": {}
  }
}

(4)查询部分结果

GET czxy2/_search
{
  "query": {
    "match_all": {}
  },
  "_source": ["username","city"]
}

(5)条件查询:匹配查询

GET czxy2/_search
{
  "query": {
    "match": {
      "username": "张三"
    }
  }
}

(6)条件查询:复合查询(多条件查询)

1.bool:多条件拼接

2.must:必须

3.must_not:不含

4.should:可有可无

GET czxy2/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "city": "山东"
          }
        }
      ],
      "must_not": [
        {
          "match": {
            "age": 22
          }
        }
      ]
    }
  }
}

(7)should并集查询

注意:must和should同时存在的时候,should将会变得不起作用

GET czxy2/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "match": {
            "city": "山东"
          }
        },
        {
          "match": {
            "city": "山西"
          }
        }
      ]
    }
  }
}

(8)精确匹配

term 进行精确匹配(数据要求:数字、日期、布尔、not_analyzed的字符串(未分词))

GET czxy2/_search
{
  "query": {
    "term": {
      "age": 22
    }
  }
}

(9)范围查询

range 用于确定范围,gt 大于、lt 小于、gte大于等于、lte小于等于

GET czxy2/_search
{
  "query": {
    "range": {
      "age": {
        "gte": 19,
        "lte": 21
      }
    }
  }
}

(10)排序

GET czxy2/_search
{
  "query": {
    "match_all": {}
  }, 
  "sort": [
    {
      "age": {
        "order": "desc"
      }
    }
  ]
}

(11)分页查询

from 设置索引号,从0开始

size 设置每页个数

GET czxy2/_search
{
  "query": {
    "match_all": {}
  }, 
  "from": 0, 
  "size": 1
}

  • 7
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值