一、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)
{ (请求体) }
-
添加数据
PUT /userinfo/user/1 { "name":"weder", "age":"22", "desc":"学习", "tags":["男的","JAVA","666"] }
- 查询数据
GET /userinfo/user/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":"吃饭"
}
}
- 简单条件查询
GET /userinfo/user/_search?q=name:weder
- 需要进行额外操作的查询,_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":"吃饭"
}
}
]
}
}
}
- 非 查询
GET /userinfo/user/_search
{
"query": {
"bool": {
"must_not": [
{
"match": {
"name":"weder"
}
}
]
}
}
}
-
过滤器filter,可用于范围查找
-
分页,form:开始页,size:页数
GET /userinfo/user/_search
{
"query": {
"match": {
"desc":"学习"
}
},
"_source": ["name","age"],
"from": 0,
"size": 2
}
-
还有highlight,可以对结果进行拼接html标签,让结果得以高亮显示