码迷,mamicode.com
首页 > 其他好文 > 详细

ES基本语法

时间:2020-10-20 16:38:01      阅读:41      评论:0      收藏:0      [点我收藏+]

标签:dex   字母   tar   nes   keyword   存储   建库   修改   分组聚合   

上一篇讲的是安装,本篇记录常用的命令

https://www.cnblogs.com/xiaozhang666/p/13845617.html

与mysql相比下对应关系

技术图片

1. 索引库操作(创建库)

#1.新增
PUT /root01
#2.查看
GET /root01
#3.删除
DELETE /root01

2. 类型详解(创建表)

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

    类型:对应的是mysql中的字段类型

    • String

      • text:

        可以分词,但是不可以参与分组聚合查询

      • keyword:

        不可以分词,但是可以参与分组聚合查询

    • 数值类型

      • double,long,float,int.....

    • 数组

      arrays

    • 日期

      date: 日期类型不常用,日期类型占用空间较大,一般使用毫秒值---->long

    • 对象

    • ..........

  • index:

    是否索引,默认值是true,代表会索引

  • store:

    是否独立存储,默认值是false,不独立存储,除非是比较重要的字段可以设置。

  • analyzer:

    分词器,ik_max_word(最细粒度分词)

举例

#必须先创建heima索引库
PUT /root01
#创建类型
PUT /root01/_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 /root01/_mapping/goods

3. 文档操作(行数据操作)

#1.新增文档
POST /root01/goods/
{
    "title":"大红手机",
    "images":"http://image.leyou.com/12479122.jpg",
    "price":2699.00
}
#2.根据id查看文档
GET /root01/goods/a7S5P3UBnwV3pvMMA4Sr

#3.指定id新增
POST /root01/goods/1
{
    "title":"小红手机",
    "images":"http://image.leyou.com/12479122.jpg",
    "price":3399.00
}
#4.根据id修改文档 如果数据库中没有id=3会新增,如果有则修改
POST /heima/goods/3
{
    "title":"超超超大红手机",
    "images":"http://image.leyou.com/12479122.jpg",
    "price":99999.00
}
#5.根据id删除文档
DELETE /root01/goods/3

#6.根据查询删除所有
POST /root01/_delete_by_query
{
  "query": {
    "match_all": {}
  }
}

技术图片

4. 查询

基本查询

POST /root01/_search
{
  "query": {
    "match_all": {}
  }
}
#2.条件模糊查询
POST /root01/_search
{
  "query": {
    "match": {
      "title": "大红"
    }
  }
}
#3.多字段匹配查询
#准备数据
POST /root01/goods/1
{
  "title": "超大红手机",
  "images": "http://image.leyou.com/12479122.jpg",
  "price": 5288,
  "subtitle": "华为手机"
}
POST /heima/_search
{
  "query": {
    "multi_match": {
      "query": "手机",
      "fields": [
        "title",
        "subtitle"
      ]
    }
  }
}
#4.精确查询 查询时字段是不分词
POST /root01/_search
{
  "query": {
    "term": {
      "price": {
        "value": "2699"
      }
    }
  }
}
#5.多条件精确查询
POST /root01/_search
{
  "query": {
    "terms": {
      "price": [
        "2699",
        "5288"
      ]
    }
  }
}

结果过滤

默认是包含(includes),可以设置excludes不包含

#结果过滤 包含
POST /root01/_search
{
  "_source": [
    "subtitle",
    "title"
  ],
  "query": {
    "match_all": {}
  }
}

#结果过滤 不包含
POST /root01/_search
{
  "_source": {
    "excludes": ["price","title"]
  },
  "query": {
    "match_all": {}
  }
}

高级查询(扩展)

#布尔组合查询 与或非
GET /root01/_search
{
    "query":{
        "bool":{
            "must":     { "match": { "title": "小米" }},
            "must_not": { "match": { "title":  "电视" }},
            "should":   { "match": { "title": "手机" }}
        }
    }
}

#范围查询  gte 大于等于 lte 小于等于
POST /root01/_search
{
  "query": {
    "range": {
      "price": {
        "gte": 2699,
        "lte": 3288
      }
    }
  }
}

#模糊查询,默认系数为1,可以写错一个字母
POST /root01/_search
{
  "query": {
    "fuzzy": {
      "title": "appla"
    }
  }
}
#模糊查询,最多支持两个字母写错
POST /root01/_search
{
  "query": {
    "fuzzy": {
      "title": {
        "value": "appaa",
        "fuzziness": 2
      }
    }
  }
}

 

ES基本语法

标签:dex   字母   tar   nes   keyword   存储   建库   修改   分组聚合   

原文地址:https://www.cnblogs.com/xiaozhang666/p/13846075.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!