ElasticSearch基本语法

295 阅读1分钟

一、ElasticSearch与关系型数据库相似之处

ElasticSearch与关系型数据库(Mysql、Sql Server)在语法使用上是有类似之处的。

关系型数据库ElasticSearch
数据库(database)索引(indices)
表(tables)类型(types)
行(rows)文档(document)
字段(columns)字段(fields)

二、基本数据类型

(1)字符串类型: text(会被分词器拆分), keyword(不会被分词器拆分)

(2)数字类型:long, integer, short, byte, double, float, half_float, scaled_float

(3)日期:date

(4)日期(纳秒):date_nanos

(5)布尔型:boolean

(6)二进制类型:binary

等等......

三、文档操作基本语法

一般使用方式:

(请求方式) /(索引)/(类型)/(id)

{ (请求体) }

  1. 添加数据

    PUT /userinfo/user/1
    {
      "name":"weder",
      "age":"22",
      "desc":"学习",
      "tags":["男的","JAVA","666"]
    }
    

  1. 查询数据
    GET /userinfo/user/1
    

  1. 修改数据 方法一:

PUT /userinfo/user/1 { "desc":"游戏" }

![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/60d7bf66236145898965c1172b6f00ff~tplv-k3u1fbpfcp-watermark.image)
从结果上看,可知道该方法是通过直接覆盖的方式进行修改,不推荐

方法二(常用):
```json
POST /userinfo/user/1/_update
{
 "doc":{
 	"name":"weder",
 	"desc":"吃饭"
 }
}

  1. 简单条件查询
GET /userinfo/user/_search?q=name:weder

  1. 需要进行额外操作的查询,_source字段为只显示的字段
GET /userinfo/user/_search
{
"query": {
 "match": {
     "desc":"吃饭"
   }
},
"_source": ["name"]
}

6. 多条件查询(类似sql中的and)

GET /userinfo/user/_search
{
"query": {
 "bool": {
   "must": [
     {
       "match": {
         "name":"weder"
       }
     },
     {
       "match": {
          "desc":"学习"
       }
     }
   ]
 }
}
}

7.多条件查询(类似sql中的or)

GET /userinfo/user/_search
{
"query": {
 "bool": {
   "should": [
     {
       "match": {
         "name":"weder"
       }
     },
     {
       "match": {
          "desc":"吃饭"
       }
     }
   ]
 }
}
}

  1. 非 查询
GET /userinfo/user/_search
{
"query": {
  "bool": {
    "must_not": [
      {
        "match": {
          "name":"weder"
        }
      }
    ]
  }
}
}

  1. 过滤器filter,可用于范围查找

  2. 分页,form:开始页,size:页数

GET /userinfo/user/_search
{
"query": {
  "match": {
      "desc":"学习"
    }
},
"_source": ["name","age"],
"from": 0,
"size": 2
}

  1. 还有highlight,可以对结果进行拼接html标签,让结果得以高亮显示